Concept for types that can be read indirectly via dereference.
More...
#include <jh/conceptual/iterator.h>
template<typename I>
requires (!std::same_as<jh::concepts::iterator_value_t<I>, void>);
requires (!std::same_as<jh::concepts::iterator_reference_t<I>, void>);
requires (!std::same_as<jh::concepts::iterator_rvalue_reference_t<I>, void>);
{ *it } -> std::convertible_to<std::remove_cvref_t<jh::concepts::iterator_reference_t<I>>>;
} && requires(I &&it) {
detail::adl_iter_move(std::forward<I>(it));
} &&
std::common_reference_with<
std::remove_cvref_t<iterator_reference_t<I>>,
> &&
std::common_reference_with<
std::remove_cvref_t<iterator_rvalue_reference_t<I>>,
>
Concept for types that can be read indirectly via dereference.
Definition iterator.h:327
typename detail::iterator_reference_impl< I >::type iterator_reference_t
Deduces the reference type of a duck-typed iterator.
Definition iterator.h:312
decltype(detail::adl_iter_move(std::declval< I & >())) iterator_rvalue_reference_t
Deduces the rvalue reference type of a duck-typed iterator.
Definition iterator.h:316
typename detail::iterator_value_impl< I >::type iterator_value_t
Deduces the value type of a duck-typed iterator.
Definition iterator.h:308
Concept for types that can be read indirectly via dereference.
- Template Parameters
-
| I | Iterator-like type to be checked. |