Templa 0.0.1-alpha
C++ Metaprogramming Utilities
|
Ntempla | |
Nalgorithms | |
Cjoin | Compile-time string concatenation of multiple std::string_view references |
Cmax | Computes the maximum value among a pack of compile-time constants |
Cmax_from | Computes the maximum value from a container-like object at compile time |
Cmin | Computes the minimum value among a pack of compile-time constants |
Cmin_from | Computes the minimum value from a container-like object at compile time |
Creverse | Reverses a compile-time pack of constant values |
Creverse_from | Reverses the elements of a constexpr container at compile time |
Cunique | Computes a compile-time unique sequence from a pack of values |
Cunique_from | Computes a compile-time unique sequence from a container expression |
Nconcepts | |
Cis_basic_string | Helper struct to detect if a type is std::basic_string |
Cis_basic_string< std::basic_string< C, T, A > > | |
Nconvert | |
Cconvert_to_tuple | Converts a pack of types into a std::tuple of those types |
Cconvert_to_tuple< From< Ts... > > | Converts a template instantiation of types into a std::tuple of those types |
Cconvert_to_variant | Converts a pack of types into a std::variant of those types |
Cconvert_to_variant< From< Ts... > > | Converts a template instantiation of types into a std::variant of those types |
Ninternal | |
Nhidden | Internal utilities and implementation details |
Celement_pack | A template pack holding a list of values of type T |
Cpack | A template pack to hold a variadic list of types |
Cforward_elements | Forward a list of elements as a std::array |
Cforward_elements_from | Extract elements from a container-like template parameter as a new container |
Ctype_list | A compile-time list of types |
Ctype_list< T< Ts... > > | Specialization for wrapping a template class parameter pack into a type_list |
Cuniform_element_identity | Uniform element identity helper for a list of values |
Cvisitor | Helper visitor struct inheriting from multiple function objects |
Ntraits | |
Cfunction_traits | Primary template for function traits. Specialization used to extract traits from functor types (e.g., lambdas) |
Cargument | Retrieves the type of the N-th argument |
Cfunction_traits< F & > | Lvalue reference specialization |
Cfunction_traits< F && > | Rvalue reference specialization |
Cfunction_traits< R(*)(Args...)> | Specialization for function pointer types |
Cfunction_traits< R(Args...)> | Specialization for regular function types |
Cargument | Retrieves the type of the N-th argument |
Cfunction_traits< R(C::*)(Args...) const > | Specialization for const member function pointers |
Cfunction_traits< R(C::*)(Args...)> | Specialization for member function pointers |
Cfunction_traits< R(C::*)> | Specialization for pointer-to-member types |
Cstrip | Recursively strips const, volatile qualifiers and pointers from a type |
Cstrip< const T * > | |
Cstrip< const T > | |
Cstrip< const volatile T * > | |
Cstrip< const volatile T > | |
Cstrip< T * > | |
Cstrip< volatile T * > | |
Cstrip< volatile T > | |
Ntype_info | |
Nctti | |
Chash_t | Generates a unique type identifier for a type C at compile time |
Cname_of | Primary template to get the string name of a type |
Cname_of< char > | Specialization for char |
Cname_of< float > | Specialization for float |
Cname_of< int > | Specialization for int |
Cname_of< long > | Specialization for long |
Cname_of< std::uint16_t > | Specialization for std::uint16_t |
Cname_of< std::uint32_t > | Specialization for std::uint32_t |
Cname_of< std::uint64_t > | Specialization for std::uint64_t |
Cname_of< std::uint8_t > | Specialization for std::uint8_t |
Cname_of< void > | Specialization for void |
Ctype_descriptor | Provides a human-readable string description of the type T, including qualifiers and pointers |
CFlagEnum | A utility wrapper for using scoped or unscoped enum types as bit flags |
Cindex_at_type | Get the index of a type in a type list |
Cindex_at_type< T, U< List... > > | Get the index of a type in a templated type list |
Coffset_index_sequence | Utility to create an offset std::index_sequence |
Coffset_index_sequence< Offset, std::index_sequence< Is... > > | Specialization for generating an offset index sequence |
Ctype_at_index | Get the type at a given index in a parameter pack |
Ctype_at_index< idx, T< Ts... > > | Get the type at a given index in a templated type list |
Ctype_list_append | Appends types or type lists to an existing type list |
Ctype_list_append< Initial< Inits... >, Appender< Apps... > > | Specialization to append one type list to another |
Ctype_list_append< Initial< Inits... >, Elem > | Append a single type to a type list |
Ctype_list_contains | Check if a type list contains a given type |
Ctype_list_contains< T, U< Ts... > > | Check if a templated type list contains a given type |
Ctype_list_flatten | Recursively flattens nested type_lists into a single flat type_list |
Ctype_list_flatten< internal::type_list< Ts... > > | If the input is a type_list, recurse into its elements |
Ctype_list_flatten< T > | If the input is a non-type_list type, return it as a single-element type_list |
Ctype_list_flatten< T, Rest... > | Recursive case: flatten head and tail separately and append results |
Ctype_list_flatten<> | Base case: flattening an empty list yields an empty type_list |
Ctype_list_pop_back | Remove the last type from a type list |
Ctype_list_pop_back< Head, Mid, Tail... > | Remove the last type from a longer pack recursively |
Ctype_list_pop_back< Head, Tail > | Specialization for exactly two types: last type is popped |
Ctype_list_pop_back< Tlist< Ts... > > | Remove the last type from a templated type list |
Ctype_list_pop_front | Remove the first type from a type list |
Ctype_list_pop_front< T, Ts... > | Remove the first type from a pack of types |
Ctype_list_pop_front< Tlist< U, Ts... > > | Remove the first type from a templated type list |
Ctype_list_prepend | Prepends types or type lists to an existing type list |
Ctype_list_prepend< Initial< Inits... >, Elem > | Prepend a single type to a type list |
Ctype_list_prepend< Initial< Inits... >, Prepender< Preps... > > | Specialization to prepend one type list to another |
Ctype_list_reverse | Reverse the order of types in a type list |
Ctype_list_reverse< T, U, Ts... > | Reverse a pack of types |
Ctype_list_reverse< Tlist< T, U, Ts... > > | Reverse types in a templated type list |
Ctype_list_split | Splits a type list into two sublists using index sequences |
Ctype_list_split< T< Args... >, std::index_sequence< Is... >, std::index_sequence< Js... > > | Specialization of type_list_split for variadic type lists |
Ctype_list_split_half | Splits a type list into two halves |
Ctype_list_split_half< T< Args... > > | Specialization to split T<Args...> into two halves |
Ctype_list_unique | Removes duplicate types from a parameter pack |
Ctype_list_unique< T, Ts... > | |
Ctype_list_unique<> |