16 #include <type_traits>
19 #ifdef SEQAN3_DEPRECATED_310
34 #ifdef SEQAN3_DEPRECATED_310
42 template <std::input_iterator it_t>
43 struct value_type<it_t>
57 #ifdef SEQAN3_DEPRECATED_310
65 template <std::input_iterator it_t>
66 struct reference<it_t>
80 #ifdef SEQAN3_DEPRECATED_310
88 template <std::input_iterator it_t>
89 struct rvalue_reference<it_t>
109 #ifdef SEQAN3_DEPRECATED_310
117 template <std::weakly_incrementable it_t>
118 struct difference_type<it_t>
132 #ifdef SEQAN3_DEPRECATED_310
142 template <std::weakly_incrementable it_t>
143 struct size_type<it_t>
156 namespace seqan3::detail
175 template <
typename underlying_iterator_t>
176 struct maybe_iterator_category
178 #if SEQAN3_DOXYGEN_ONLY(1)0
185 using iterator_category = MAYBE_PRESENT(std::iterator_traits<underlying_iterator_t>::iterator_category);
190 template <
typename t>
191 SEQAN3_CONCEPT has_iterator_category = requires ()
193 typename t::iterator_category;
197 #if SEQAN3_WORKAROUND_GCC_96070
201 template <
typename underlying_iterator_t>
203 struct maybe_iterator_category<underlying_iterator_t>
205 using iterator_category = void;
210 template <
typename underlying_iterator_t>
211 requires has_iterator_category<std::iterator_traits<underlying_iterator_t>>
212 struct maybe_iterator_category<underlying_iterator_t>
227 template <
typename underling_iterator_t>
228 struct maybe_inherited_iterator_category :
public maybe_iterator_category<underling_iterator_t>
232 template <
typename underling_iterator_t>
233 requires has_iterator_category<underling_iterator_t>
234 struct maybe_inherited_iterator_category<underling_iterator_t>
245 template <
typename it_t>
247 requires std::input_or_output_iterator<it_t>
249 using iterator_concept_tag_t =
251 std::contiguous_iterator<it_t>,
252 std::contiguous_iterator_tag,
254 std::random_access_iterator<it_t>,
257 std::bidirectional_iterator<it_t>,
260 std::forward_iterator<it_t>,
263 std::input_iterator<it_t>,
269 namespace seqan3::detail
284 template <
typename it_t>
292 template <
typename it_t>
294 struct iter_pointer<it_t>
306 template <
typename it_t>
307 using iter_pointer_t =
typename iter_pointer<it_t>::type;
Provides C++20 additions to the <iterator> header.
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
Provides various transformation trait base templates and shortcuts.