13 #ifndef CXXUTILS_CONCEPTS_H
14 #define CXXUTILS_CONCEPTS_H
17 #include <type_traits>
29 template <
class HASHER,
class T>
31 std::destructible<HASHER> &&
32 std::copy_constructible<HASHER> &&
35 {
h(
x) } -> std::same_as<std::size_t>;
40 template <
class PRED,
class ARG1,
class ARG2=ARG1>
42 std::copy_constructible<PRED> &&
43 std::predicate<PRED, ARG1, ARG2>;
46 template <
class CONTAINER>
50 requires std::contiguous_iterator<decltype(
c.begin())>;
54 template <
class ITERATOR,
class VAL>
56 std::input_iterator<ITERATOR> &&
57 std::convertible_to<std::iter_value_t<ITERATOR>, VAL>;
65 #endif // not CXXUTILS_CONCEPTS_H