23namespace bio::ranges::detail
30#if BIOCPP_WORKAROUND_GCC_96070
32template <
typename it_t>
33struct iterator_category_tag
38template <
typename it_t>
40struct iterator_category_tag<it_t>
55template <
typename it_t>
56using iterator_category_tag_t =
typename iterator_category_tag<it_t>::type;
72template <
typename it_t>
87template <
typename it_t>
88 requires std::input_or_output_iterator<it_t>
112template <
typename it_t>
120template <
typename it_t>
122struct iter_pointer<it_t>
135template <
typename it_t>
136using iter_pointer_t =
typename iter_pointer<it_t>::type;
139concept has_range_value_type =
requires {
typename std::ranges::range_value_t<std::remove_cvref_t<t>>; };
165 requires detail::has_range_value_type<t>
169 using type = std::ranges::range_value_t<std::remove_cvref_t<t>>;
174 requires(detail::has_range_value_type<t> &&
175 detail::has_range_value_type<std::ranges::range_value_t<std::remove_cvref_t<t>>>)
200 requires detail::has_range_value_type<t>
205 requires(detail::has_range_value_type<t> &&
206 detail::has_range_value_type<std::ranges::range_value_t<std::remove_cvref_t<t>>>)
225template <
typename t1,
typename t2>
226concept range_compatible =
requires(t1, t2) {
227 requires(range_dimension_v<t1> == range_dimension_v<t2>);
Provides various type traits on generic types.
Provides platform and dependency checks.
constexpr size_t range_dimension_v
Returns the number of times you can call std::ranges::value_type_t recursively on t (type trait).
Definition: type_traits.hpp:201
typename range_innermost_value< t >::type range_innermost_value_t
Shortcut for bio::ranges::range_innermost_value (transformation_trait shortcut).
Definition: type_traits.hpp:185
The ranges module's namespace.
Recursively determines the value_type on containers and/or iterators.
Definition: type_traits.hpp:167
std::ranges::range_value_t< std::remove_cvref_t< t > > type
The return type (recursion not shown).
Definition: type_traits.hpp:169