Provides additional utility functionality used by multiple modules. More...
Modules  
Concept  
Builtin Character Operations  
Provides various operations on character types.  
Parallel  
This module contains types and utilities for concurrent execution of algorithms in SeqAn.  
Tuple  
Additional helper utilities for "tuple" types like std::tuple, std::pair, seqan3::pod_tuple that are not specific to a SeqAn module.  
Type List  
Provides seqan3::type_list and metaprogramming utilities for working on type lists.  
Type Pack  
Provides metaprogramming utilities for working on template parameter packs.  
Type Traits  
Provides various type traits and their shortcuts.  
Classes  
interface  pair_like 
Whether a type behaves like a tuple with exactly two elements. More...  
struct  seqan3::pod_tuple< type0, types... > 
Behaves like std::tuple but is an aggregate PODType. More...  
interface  tuple_like 
Whether a type behaves like a tuple. More...  
Tuple utility functions  
template<size_t pivot_c, template< typename ... > typename tuple_t, typename ... ts>  
constexpr auto  seqan3::tuple_split (tuple_t< ts... > const &t) 
Splits a tuple like data structure at the given position. More...  
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. More...  
template<tuple_like tuple_t>  
constexpr auto  seqan3::tuple_pop_front (tuple_t &&t) 
Removes the first element of a tuple. More...  
template<size_t pivot_c, template< typename ... > typename tuple_t, typename ... ts>  
constexpr auto  seqan3::tuple_split (tuple_t< ts... > &&t) 
Splits a tuple like data structure at the given position. More...  
Provides additional utility functionality used by multiple modules.
The utility module contains concepts, functions, traits and classes that are independent of the remaining modules in SeqAn. These implementations are considered external functionality, i.e. they could have been outsourced into their own libraries.
The utility module has no dependency to any other module except the Core module.

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 
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.