SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
|
Additional helper utilities for "tuple" types like std::tuple, std::pair, seqan3::pod_tuple that are not specific to a SeqAn module. More...
Classes | |
interface | pair_like |
Whether a type behaves like a tuple with exactly two elements. More... | |
struct | seqan3::pod_tuple< type0 > |
Recursion anchor for seqan3::pod_tuple. More... | |
struct | seqan3::pod_tuple< type0, types... > |
Behaves like std::tuple but is an aggregate PODType. More... | |
interface | tuple_get |
Subconcept definition for seqan3::tuple_like to test for std::get-interface. More... | |
interface | tuple_like |
Whether a type behaves like a tuple. More... | |
interface | tuple_size |
Subconcept definition for seqan3::tuple_like to test for std::tuple_size-interface. More... | |
struct | seqan3::detail::tuple_type_list< tuple_t > |
Transformation trait to expose the tuple element types as seqan3::type_list. More... | |
Typedefs | |
template<typename t1 , typename t2 > | |
using | seqan3::common_pair = seqan::stl::pair< t1, t2 > |
A std::pair implementation that incorporates most changes from C++23's standard library. | |
template<typename... t> | |
using | seqan3::common_tuple = seqan::stl::tuple< t... > |
A std::tuple implementation that incorporates most changes from C++23's standard library. | |
template<detail::tuple_size tuple_t> | |
using | seqan3::detail::tuple_type_list_t = typename tuple_type_list< tuple_t >::type |
Helper type for seqan3::detail::tuple_type_list. | |
Functions | |
template<typename... elements_t> | |
constexpr auto | seqan3::detail::all_elements_model_totally_ordered (seqan3::type_list< elements_t... >) -> std::bool_constant<(std::totally_ordered< elements_t > &&... &&true)> |
Helper type function to check for std::totally_ordered on all elements of the given tuple type. | |
template<tuple_like tuple_t> | |
constexpr auto | seqan3::tuple_pop_front (tuple_t &&t) |
Removes the first element of a tuple. | |
template<typename pivot_t , tuple_like tuple_t> | |
constexpr auto | seqan3::tuple_split (tuple_t &&t) |
Splits a tuple like data structure at the first position of the given type. | |
template<size_t pivot_c, template< typename... > typename tuple_t, typename... ts> requires tuple_like<tuple_t<ts...>> | |
constexpr auto | seqan3::tuple_split (tuple_t< ts... > const &t) |
Splits a tuple like data structure at the given position. | |
template<size_t beg, template< typename... > typename tuple_t, size_t... Is, typename... ts> requires tuple_like<tuple_t<ts...>> && tuple_like<tuple_t<>> | |
constexpr auto | seqan3::detail::tuple_split (tuple_t< ts... > const &t, std::index_sequence< Is... > const &idx) |
Helper function for seqan3::tuple_split. | |
Additional helper utilities for "tuple" types like std::tuple, std::pair, seqan3::pod_tuple that are not specific to a SeqAn module.
using seqan3::detail::tuple_type_list_t = typedef typename tuple_type_list<tuple_t>::type |
Helper type for seqan3::detail::tuple_type_list.
|
constexpr |
Removes the first element of a tuple.
[in] | t | The original tuple. |
t
.Note, that the tuple must contain at least one element and must support empty tuple types, i.e. std::pair cannot be used.
Linear in the number of elements.
Concurrent invocations of this functions are thread safe.
|
constexpr |
Splits a tuple like data structure at the first position of the given type.
pivot_t | A template type specifying the split position. |
[in] | t | The original tuple to split. |
Splits a tuple into two tuples, while the element at the split position will be contained in the second tuple. Note, that the returned tuples can be empty. For this reason it is not possible to use tuple like objects, that cannot be empty, i.e. std::pair. Using such an object will emit an compiler error.
Linear in the number of elements.
Concurrent invocations of this functions are thread safe.
|
constexpr |
Splits a tuple like data structure at the given position.
pivot_c | A template value specifying the split position. |
tuple_t | A template alias for a tuple like object. |
...ts | Types tuple_t is specified with. |
[in] | t | The original tuple to split. |
Splits a tuple into two tuples, while the element at the split position will be contained in the second tuple. Note, that the returned tuples can be empty. For this reason it is not possible to use tuple like objects, that cannot be empty, i.e. std::pair. Using such an object will emit an compiler error.
Linear in the number of elements.
Concurrent invocations of this functions are thread safe.
|
constexpr |
Helper function for seqan3::tuple_split.
beg | A template value containing the start position from where to extract the values. |
tuple_t | A template alias for a tuple like object. |
...ts | Types tuple_t is specified with. |
...Is | Indices of the tuple elements that should be extracted. |
[in] | t | The original tuple to split. |
[in] | idx | A std::index_sequence with all indices that should be extracted beginning at beg . |