17 #include <type_traits>
33 SEQAN3_CONCEPT has_range_value_type = requires {
typename std::ranges::range_value_t<std::remove_cvref_t<t>>; };
38 template <
bool const_range,
typename range_t>
43 template <
bool const_range,
typename range_t>
48 template <
bool const_v,
typename range_t>
70 requires detail::has_range_value_type<t>
75 using type = std::ranges::range_value_t<std::remove_cvref_t<t>>;
80 requires detail::has_range_value_type<t> && detail::has_range_value_type<std::ranges::range_value_t<std::remove_cvref_t<t>>>
106 template <
typename t>
108 requires detail::has_range_value_type<t>
113 template <
typename t>
114 requires detail::has_range_value_type<t> && detail::has_range_value_type<std::ranges::range_value_t<std::remove_cvref_t<t>>>
115 constexpr
size_t range_dimension_v<t> = range_dimension_v<std::ranges::range_value_t<std::remove_cvref_t<t>>> + 1;
Provides various type traits on generic types.
std::ranges::sentinel_t< maybe_const_range_t< const_v, range_t > > maybe_const_sentinel_t
Returns the const sentinel of range_t if const_range is true; otherwise the non-const sentinel.
Definition: type_traits.hpp:49
constexpr size_t range_dimension_v
Returns the number of times you can call seqan3::value_type_t recursively on t (type trait).
Definition: type_traits.hpp:110
std::ranges::iterator_t< maybe_const_range_t< const_range, range_t > > maybe_const_iterator_t
Returns the const iterator of range_t if const_range is true; otherwise the non-const iterator.
Definition: type_traits.hpp:44
typename range_innermost_value< t >::type range_innermost_value_t
Shortcut for seqan3::range_innermost_value (transformation_trait shortcut).
Definition: type_traits.hpp:91
Provides various transformation traits for use on iterators.
Provides C++20 additions to the <iterator> header.
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
Adaptations of concepts from the Ranges TS.
Recursively determines the value_type on containers and/or iterators.
Definition: type_traits.hpp:73
std::ranges::range_value_t< std::remove_cvref_t< t > > type
The return type (recursion not shown).
Definition: type_traits.hpp:75