5 #ifndef VCCC_ITERATOR_SIZED_SENTINEL_FOR_HPP_
6 #define VCCC_ITERATOR_SIZED_SENTINEL_FOR_HPP_
21 template<
typename S,
typename I>
26 template<
typename S,
typename I,
typename =
void,
typename =
void>
27 struct explicit_sized_sentinel_subtract_check : std::false_type {};
29 template<
typename S,
typename I>
30 struct explicit_sized_sentinel_subtract_check<
32 void_t<decltype(
std::declval<S>() - std::declval<I>())>,
33 void_t<decltype(std::declval<I>() - std::declval<S>())>
35 same_as<decltype(std::declval<S>() - std::declval<I>()), iter_difference_t<I>>,
36 same_as<decltype(std::declval<I>() - std::declval<S>()), iter_difference_t<I>>
39 template<
typename S,
typename I>
40 struct sized_sentinel_requires : implicit_expression_check<explicit_sized_sentinel_subtract_check, const S&, const I&> {};
47 negation<disable_sized_sentinel_for<std::remove_cv_t<S>, std::remove_cv_t<I>>>,
48 has_typename_type<iter_difference<I>>
51 struct sized_sentinel_for_impl : std::false_type {};
53 template<
typename S,
typename I>
54 struct sized_sentinel_for_impl<S, I, true> : sized_sentinel_requires<S, I> {};
74 template<
typename S,
typename I>
Definition: matrix.hpp:495
Definition: directory.h:12
constexpr VCCC_INLINE_OR_STATIC detail::element_niebloid< 1 > value
Definition: key_value.hpp:35
Definition: sized_sentinel_for.hpp:22
specifies that the - operator can be applied to an iterator and a sentinel to calculate their differe...
Definition: sized_sentinel_for.hpp:75