5 #ifndef VCCC_ITERATOR_ITERATOR_TRAITS_FORWARD_DECLARE_HPP_
6 #define VCCC_ITERATOR_ITERATOR_TRAITS_FORWARD_DECLARE_HPP_
8 #if __cplusplus >= 202002L
11 #include <type_traits>
17 template<
typename Iter>
18 struct cxx20_iterator_traits;
23 struct is_primary_iterator_traits;
27 template<
typename T>
struct is_primary_iterator_traits<
std::iterator_traits<T> > : std::true_type {};
28 template<
typename T>
struct is_primary_iterator_traits<
std::iterator_traits<T*> > : std::false_type {};
29 #if __cplusplus >= 202002L
31 struct is_primary_iterator_traits<
std::iterator_traits< std::counted_iterator<I> >> : is_primary_iterator_traits<I> {};
32 template<
typename I,
typename S>
33 struct is_primary_iterator_traits<
std::iterator_traits< std::common_iterator<I, S> >> : std::false_type {};
39 template<
typename T>
struct is_primary_iterator_traits< cxx20_iterator_traits<T> > : std::true_type {};
40 template<
typename T>
struct is_primary_iterator_traits< cxx20_iterator_traits<T*> > : std::false_type {};
42 #if __cplusplus >= 202002L
44 struct is_primary_iterator_traits<cxx20_iterator_traits<
std::counted_iterator<I> >> : is_primary_iterator_traits<I> {};
45 template<
typename I,
typename S>
46 struct is_primary_iterator_traits<cxx20_iterator_traits<
std::common_iterator<I, S> >> : std::false_type {};
Definition: matrix.hpp:495
Definition: directory.h:12