1#ifndef ZEN_CONCEPTS_HPP
2#define ZEN_CONCEPTS_HPP
9#include "zen/config.hpp"
10#include "zen/compat.hpp"
15concept range =
requires (T& a) {
16 { a.begin() } -> std::input_iterator;
17 { a.end() } -> std::input_iterator;
22 && std::same_as<iter_const_reference_t<T>, std::iter_reference_t<T>>;
30using range_iterator_t =
decltype(std::declval<T&>().begin());
33using range_reference_t = std::iter_reference_t<range_iterator_t<T>>;
39struct is_pointer<std::unique_ptr<T>> : std::true_type {};
42struct is_pointer<std::shared_ptr<T>> : std::true_type {};
Definition concepts.hpp:21
Definition concepts.hpp:25
Definition concepts.hpp:45
Definition concepts.hpp:15
Definition concepts.hpp:36