Provides metaprogramming utilities, concepts and some helper classes. More...
Modules | |
Concept | |
Additional concepts that are not specific to a BioC++ module. | |
Tag | |
Provides tagging utilities (often used in tag-dispatching). | |
Type List | |
Provides bio::meta::type_list and metaprogramming utilities for working on type lists. | |
Type Traits | |
Provides various type traits and their shortcuts. | |
Namespaces | |
namespace | bio::meta |
The Meta module's namespace. | |
namespace | bio::meta::literals |
An inline namespace for meta literals. It exists to safely allow using namespace . | |
Classes | |
struct | bio::meta::overloaded< functors > |
Wrapper to create an overload set of multiple functors. More... | |
struct | bio::meta::pod_tuple< type0 > |
Recursion anchor for pod_tuple. More... | |
struct | bio::meta::pod_tuple< type0, types... > |
Behaves like std::tuple but is an aggregate PODType. More... | |
Functions | |
template<typename... functors> | |
overloaded (functors...) -> overloaded< functors... > | |
Deduction guide for bio::meta::overloaded. | |
Tuple utility functions | |
Helper functions for tuple like objects. | |
template<size_t pivot_c, template< typename... > typename tuple_t, typename... ts> requires tuple_like<tuple_t<ts...>> | |
constexpr auto | bio::meta::tuple_split (tuple_t< ts... > const &t) |
Splits a tuple like data structure at the given position. | |
template<typename pivot_t , tuple_like tuple_t> | |
constexpr auto | bio::meta::tuple_split (tuple_t &&t) |
Splits a tuple like data structure at the first position of the given type. | |
template<tuple_like tuple_t> | |
constexpr auto | bio::meta::tuple_pop_front (tuple_t &&t) |
Removes the first element of a tuple. | |
template<size_t pivot_c, template< typename... > typename tuple_t, typename... ts> requires tuple_like<tuple_t<ts...>> | |
constexpr auto | bio::meta::tuple_split (tuple_t< ts... > &&t) |
Splits a tuple like data structure at the given position. | |
Provides metaprogramming utilities, concepts and some helper classes.
The meta module is used strongly by other modules, but the content is usually not relevant to most users of the library.
|
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.