The Meta module's namespace. More...
Namespaces | |
| namespace | list_traits |
| Namespace containing traits for working on bio::meta::type_list. | |
| namespace | literals |
An inline namespace for meta literals. It exists to safely allow using namespace. | |
Classes | |
| struct | is_type_specialisation_of |
| Determines whether a source_type is a specialisation of another template. More... | |
| struct | is_type_specialisation_of< source_t, target_template > |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
| struct | is_value_specialisation_of< source_t, target_template > |
Provides concept bio::meta::template_specialisation_of<mytype, [...]> for checking the type specialisation of some type with a given template, for example a specialized type_list<float> with the type_list template. More... | |
| struct | overloaded |
| Wrapper to create an overload set of multiple functors. More... | |
| struct | pod_tuple |
| Behaves like std::tuple but is an aggregate PODType. More... | |
| struct | pod_tuple< type0 > |
| Recursion anchor for pod_tuple. More... | |
| struct | pod_tuple< type0, types... > |
| Behaves like std::tuple but is an aggregate PODType. More... | |
| struct | priority_tag |
| A tag that allows controlled overload resolution via implicit base conversion rules. More... | |
| struct | priority_tag< 0 > |
| Recursion anchor for bio::meta::priority_tag. More... | |
| struct | transfer_template_args_onto< source_template< source_arg_types... >, target_template > |
| Extracts a type template's type arguments and specialises another template with them. More... | |
| struct | transfer_template_vargs_onto< source_template< source_varg_types... >, target_template > |
| Extracts a type template's non-type arguments and specialises another template with them. More... | |
| struct | type_list |
| Type that contains multiple types. More... | |
| struct | valid_template_spec_or |
Exposes templ_t<spec_t...> if that is valid, otherwise fallback_t. More... | |
| struct | valid_template_spec_or< fallback_t, templ_t, spec_t... > |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More... | |
| struct | vtag_t |
| The type of bio::meta::vtag. [Declaration]. More... | |
| struct | vtag_t< v > |
| The type of bio::meta::vtag. [Specialisation for 1 argument]. More... | |
| struct | vtag_t< vs... > |
| The type of bio::meta::vtag. [Specialisation for 2 or more arguments]. More... | |
| struct | vtag_t<> |
| The type of bio::meta::vtag. [Specialisation for 0 arguments.]. More... | |
Concepts | |
| concept | weakly_equality_comparable_with |
Requires the two operands to be comparable with == and != in both directions. | |
| concept | weakly_ordered_with |
Requires the two operands to be comparable with <, <=, > and >= in both directions. | |
| concept | arithmetic |
| A type that satisfies std::is_arithmetic_v<t>. | |
| concept | floating_point |
| An arithmetic type that also satisfies std::is_floating_point_v<t>. | |
| concept | one_of |
| Resolves to (std::same_as<query_t, other_types> || ...). | |
| concept | builtin_character |
This concept encompasses exactly the types char, signed char, unsigned char, wchar_t, char16_t and char32_t. | |
| concept | nonint_character |
This concept encompasses exactly the types char, wchar_t, char16_t and char32_t. | |
| concept | trivially_destructible |
| A type that satisfies std::is_trivially_destructible_v<t>. | |
| concept | trivially_copyable |
| A type that satisfies std::is_trivially_copyable_v<t>. | |
| concept | trivial |
| A type that satisfies bio::meta::trivially_copyable and bio::meta::trivially_destructible. | |
| concept | standard_layout |
| Resolves to std::is_standard_layout_v<t>. | |
| concept | weakly_assignable_from |
| Resolves to std::is_assignable_v<t>. | |
| concept | decays_to |
| Resolves to std::same_as<std::decay_t<t>, std::decay_t<u>>. | |
| concept | different_from |
| The negation of bio::meta::decays_to. | |
| concept | constexpr_default_initializable |
| A type that is std::default_initializable<t> at compile-time. | |
| concept | pair_like |
| Whether a type behaves like a tuple with exactly two elements. | |
| concept | transformation_trait |
| Concept for a transformation trait. | |
| concept | unary_type_trait |
| Concept for a unary traits type. | |
Typedefs | |
| using | ignore_t = std::remove_cvref_t< decltype(std::ignore)> |
Return the type of std::ignore with const, volatile and references removed (type trait). | |
| template<typename t > | |
| using | strip_type_identity_t = std::conditional_t< is_type_specialisation_of_v< t, std::type_identity >, transformation_trait_or_t< t, void >, t > |
| A transformation trait shortcut that returns the type inside a std::type_identity or the type itself. | |
| template<typename source_type , template< typename... > typename target_template> | |
| using | transfer_template_args_onto_t = typename transfer_template_args_onto< source_type, target_template >::type |
| Shortcut for bio::meta::transfer_template_args_onto (transformation_trait shortcut). | |
| template<typename source_type , template< auto... > typename target_template> | |
| using | transfer_template_vargs_onto_t = typename transfer_template_vargs_onto< source_type, target_template >::type |
| Shortcut for bio::meta::transfer_template_vargs_onto (transformation_trait shortcut). | |
| template<typename type_t , typename default_t > | |
| using | transformation_trait_or = std::conditional_t< transformation_trait< type_t >, type_t, std::type_identity< default_t > > |
| This gives a fallback type if type_t::type is not defined. | |
| template<typename type_t , typename default_t > | |
| using | transformation_trait_or_t = typename transformation_trait_or< type_t, default_t >::type |
| Helper type of bio::meta::transformation_trait_or (transformation_trait shortcut). | |
| template<typename fallback_t , template< typename... > typename templ_t, typename... spec_t> | |
| using | valid_template_spec_or_t = typename valid_template_spec_or< fallback_t, templ_t, spec_t... >::type |
| Helper for bio::meta::valid_template_spec_or (transformation_trait shortcut). | |
Functions | |
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 | tuple_split (tuple_t< ts... > const &t) |
| Splits a tuple like data structure at the given position. | |
| template<size_t pivot_c, template< typename... > typename tuple_t, typename... ts> requires tuple_like<tuple_t<ts...>> | |
| constexpr auto | tuple_split (tuple_t< ts... > &&t) |
| Splits a tuple like data structure at the given position. | |
| template<typename pivot_t , tuple_like tuple_t> | |
| constexpr auto | 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 | tuple_pop_front (tuple_t &&t) |
| Removes the first element of a tuple. | |
Variables | |
| template<typename... t> | |
| constexpr bool | always_false = false |
A trait that is always false. Can be used for static_assert(false). DO NOT SPECIALISE! | |
| template<typename t > | |
| constexpr bool | decays_to_ignore_v = std::is_same_v<std::remove_cvref_t<t>, ignore_t> |
Return whether the input type with const, volatile and references removed is std::ignore's type. (type trait). | |
| template<typename type , typename... more_types> | |
| constinit type_list< type, more_types... > | ttag {} |
| A type-tag template. | |
| template<auto... vs> | |
| constexpr vtag_t< vs... > | vtag {} |
| A value-tag template. | |
The Meta module's namespace.