17 #include <type_traits>
33 template <
typename tuple_t>
34 SEQAN3_CONCEPT
tuple_size = requires (tuple_t v)
46 template <
typename tuple_t>
47 SEQAN3_CONCEPT
tuple_get = requires (tuple_t & v, tuple_t
const & v_c)
49 requires std::tuple_size_v<tuple_t> > 0;
51 typename std::tuple_element<0, tuple_t>::type;
60 std::convertible_to,
typename std::tuple_element<0, tuple_t>::type);
77 template <
typename state_t,
typename element_t>
93 template <detail::tuple_size tuple_t>
99 template <
size_t ... Is>
115 template <detail::tuple_size tuple_t>
175 template <
typename t>
176 SEQAN3_CONCEPT
tuple_like = detail::tuple_size<std::remove_reference_t<t>> && requires(t v)
185 (detail::tuple_get<std::remove_cvref_t<t>> &&
186 (!meta::fold<detail::tuple_type_list_t<std::remove_cvref_t<t>>,
188 meta::quote_trait<detail::models_strict_totally_ordered>>::value ||
189 std::totally_ordered<std::remove_cvref_t<t>>));
204 template <
typename t>
Provides type traits for working with templates.
meta::list< types... > type_list
Type that contains multiple types, an alias for meta::list.
Definition: type_list.hpp:31
typename tuple_type_list< tuple_t >::type tuple_type_list_t
Helper type for seqan3::detail::tuple_type_list.
Definition: concept.hpp:116
auto const move
A view that turns lvalue-references into rvalue-references.
Definition: move.hpp:70
Subconcept definition for seqan3::tuple_like to test for std::get-interface.
Subconcept definition for seqan3::tuple_like to test for std::tuple_size-interface.
Whether a type behaves like a tuple with exactly two elements.
Whether a type behaves like a tuple.
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
Helper type trait function to check for std::totally_ordered on all elements of the given tuple type.
Definition: concept.hpp:79
Transformation trait to expose the tuple element types as seqan3::type_list.
Definition: concept.hpp:95
static constexpr auto invoke_to_type_list(std::index_sequence< Is... >)
Helper function to extract the types using the tuple elements.
Definition: concept.hpp:100
decltype(invoke_to_type_list(std::make_index_sequence< std::tuple_size< tuple_t >::value >{})) type
The generated seqan3::type_list.
Definition: concept.hpp:107
Provides seqan3::pod_tuple.
Provides seqan3::type_list.
Provides various type traits on generic types.