5 #ifndef VCCC_ITERATOR_WEAKLY_INCREMENTABLE_HPP_
6 #define VCCC_ITERATOR_WEAKLY_INCREMENTABLE_HPP_
21 template<
typename T,
bool = has_
typename_type<iter_difference<T>>::value>
22 struct is_signed_integer_like_iter_difference : std::false_type {};
25 struct is_signed_integer_like_iter_difference<T, true>
26 : is_signed_integer_like<iter_difference_t<T>> {};
28 template<
typename T,
typename =
void>
29 struct is_pre_incrementable : std::false_type {};
32 struct is_pre_incrementable<T,
void_t<decltype( ++
std::declval<T&>() )>> : same_as<decltype( ++std::declval<T&>() ), T&> {};
34 template<
typename T,
typename =
void>
35 struct is_post_incrementable : std::false_type {};
38 struct is_post_incrementable<T,
void_t<decltype(
std::declval<T&>()++ )>> : std::true_type {};
49 detail::is_signed_integer_like_iter_difference<I>,
50 detail::is_pre_incrementable<I>,
51 detail::is_post_incrementable<I>
Definition: matrix.hpp:495
Definition: directory.h:12
Definition: conjunction.hpp:22
Definition: weakly_incrementable.hpp:52