17 struct HashSameFunction {
18 template<
typename T,
typename U>
19 constexpr auto operator()(InPlaceType<T>, InPlaceType<U>)
const ->
bool {
20 return concepts::SameAs<T, U>;
23 template<concepts::IntegralOrEnum T, concepts::IntegralOrEnum U>
24 requires(!concepts::TagInvocable<HashWriteFunction, DefaultHasher&, T> &&
25 !concepts::TagInvocable<HashWriteFunction, DefaultHasher&, U>)
26 constexpr auto operator()(InPlaceType<T>, InPlaceType<U>)
const ->
bool {
27 return sizeof(T) ==
sizeof(U);
30 template<
typename T,
typename U>
31 requires(concepts::TagInvocableTo<HashSameFunction, bool, InPlaceType<T>, InPlaceType<U>>)
32 constexpr auto operator()(InPlaceType<T>, InPlaceType<U>)
const ->
bool {
38constexpr inline auto hash_same = detail::HashSameFunction {};
42template<
typename T,
typename U>
47namespace di::container::detail {
48template<HashableContainer T, HashableContainer U>
53template<concepts::TupleLike T, concepts::TupleLike U>
Definition hash_same.h:43
Definition hash_write.h:48
Definition any_storable.h:9
constexpr auto hash_same
Definition hash_same.h:38
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto unpack
Definition unpack.h:24
size_t usize
Definition integers.h:33
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Definition any_storable.h:9
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto in_place_type
Definition in_place_type.h:12
Definition in_place_type.h:5