37template <
typename underlying_iterator_t>
40#if SEQAN3_DOXYGEN_ONLY(1) 0
53concept has_iterator_category =
requires () {
typename t::iterator_category; };
57template <
typename underlying_iterator_t>
58 requires has_iterator_category<std::iterator_traits<underlying_iterator_t>>
59struct maybe_iterator_category<underlying_iterator_t>
75template <
typename underling_iterator_t>
80template <
typename underling_iterator_t>
81 requires has_iterator_category<underling_iterator_t>
94template <
typename it_t>
95 requires std::input_or_output_iterator<it_t>
97 std::contiguous_iterator<it_t>,
98 std::contiguous_iterator_tag,
127template <
typename it_t>
135template <
typename it_t>
137struct iter_pointer<it_t>
150template <
typename it_t>
typename iter_pointer< it_t >::type iter_pointer_t
Return the pointer type of the input type (transformation_trait shortcut).
Definition iterator_traits.hpp:151
The internal SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
This is like std::iter_value_t, but for the pointer type.
Definition iterator_traits.hpp:129
void type
The pointer type of std::iterator_traits or void.
Definition iterator_traits.hpp:131
This handles more cases than maybe_iterator_category if you inherit the underling_iterator_t.
Definition iterator_traits.hpp:77
Defines iterator_category member if underlying_iterator_t has a valid std::iterator_traits::iterator_...
Definition iterator_traits.hpp:39
MAYBE_PRESENT(std::iterator_traits< underlying_iterator_t >::iterator_category) iterator_category
The iterator category tag. (not always present!)
Definition iterator_traits.hpp:47