19 #ifdef SEQAN3_DEPRECATED_310
34 #ifdef SEQAN3_DEPRECATED_310
42 template <std::input_iterator it_t>
43 struct value_type<it_t>
46 using type = std::iter_value_t<it_t>;
57 #ifdef SEQAN3_DEPRECATED_310
65 template <std::input_iterator it_t>
66 struct reference<it_t>
69 using type = std::iter_reference_t<it_t>;
80 #ifdef SEQAN3_DEPRECATED_310
88 template <std::input_iterator it_t>
89 struct rvalue_reference<it_t>
92 using type = std::iter_rvalue_reference_t<it_t>;
109 #ifdef SEQAN3_DEPRECATED_310
117 template <std::weakly_incrementable it_t>
118 struct difference_type<it_t>
121 using type = std::iter_difference_t<it_t>;
132 #ifdef SEQAN3_DEPRECATED_310
142 template <std::weakly_incrementable it_t>
143 struct size_type<it_t>
146 using type = std::make_unsigned_t<std::iter_difference_t<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>
202 requires (!has_iterator_category<std::iterator_traits<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>
214 using iterator_category =
typename std::iterator_traits<underlying_iterator_t>::iterator_category;
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>,
255 std::random_access_iterator_tag,
257 std::bidirectional_iterator<it_t>,
258 std::bidirectional_iterator_tag,
260 std::forward_iterator<it_t>,
261 std::forward_iterator_tag,
263 std::input_iterator<it_t>,
264 std::input_iterator_tag,
265 std::output_iterator_tag>>>>>;
269 namespace seqan3::detail
284 template <
typename it_t>
292 template <
typename it_t>
293 requires requires {
typename std::iterator_traits<it_t>::pointer; }
294 struct iter_pointer<it_t>
298 using type =
typename std::iterator_traits<it_t>::pointer;
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 C++20 additions to the type_traits header.
Provides various transformation trait base templates and shortcuts.