2#include "gaia/config/config.h"
19 template <
typename,
typename =
void>
22 template <
typename It>
25 typename It::iterator_category, typename It::value_type, typename It::difference_type,
26 typename It::pointer, typename It::reference>> {
27 using iterator_category =
typename It::iterator_category;
28 using value_type =
typename It::value_type;
29 using difference_type =
typename It::difference_type;
30 using pointer =
typename It::pointer;
31 using reference =
typename It::reference;
34 template <
typename T,
bool = std::is_
object_v<T>>
37 using value_type = std::remove_cv_t<T>;
38 using difference_type = std::ptrdiff_t;
48 template <
typename It>
55 template <
typename It>
59 template <
typename T,
typename =
void>
60 [[maybe_unused]]
constexpr bool is_iterator_v =
false;
63 [[maybe_unused]]
constexpr bool is_iterator_v<T, std::void_t<detail::iterator_cat_t<T>>> =
true;
68 template <
typename It>
69 [[maybe_unused]]
constexpr bool is_input_iter_v =
72 template <
typename It>
73 [[maybe_unused]]
constexpr bool is_fwd_iter_v =
76 template <
typename It>
77 [[maybe_unused]]
constexpr bool is_rev_iter_v =
80 template <
typename It>
81 [[maybe_unused]]
constexpr bool is_bidi_iter_v =
84 template <
typename It>
85 [[maybe_unused]]
constexpr bool is_random_iter_v =
88 template <
typename It>
91 template <
typename It>
94 template <
typename It>
97 template <
typename... It>
98 using common_diff_t = std::common_type_t<iterator_diff_t<It>...>;
100 template <
typename It>
101 constexpr iterator_diff_t<It> distance(It first, It last) {
102 if constexpr (std::is_pointer_v<It> || is_random_iter_v<It>)
105 iterator_diff_t<It> offset{};
106 while (first != last) {
Checks if endianess was detected correctly at compile-time.
Definition bitset.h:9
Iterator traits for iterators.
Definition iterator.h:49