|
struct | apply |
| Apply the metafunction 'Metafunc' to a tuplelike type 'Tuplelike'. More...
|
|
struct | remove_pointer |
| Helper function for removing pointer qualifiers from a type recursivly This is the recursion base case. More...
|
|
struct | remove_pointer< T, std::enable_if_t< std::is_pointer_v< T >, std::void_t<> > > |
| Helper function for removing pointer qualifiers from a type recursivly Provides a member type definition called 'type' which is equal to T if the first template argument is of type T* or T** or T***... More...
|
|
struct | remove_pointer< T, std::enable_if_t< std::is_array_v< T >, std::void_t<> > > |
| Oveload of remove_pointer metafunction for array types (stack allocated) More...
|
|
struct | remove_qualifier |
| Function for removing the qualifiers from a type T. Qualifiers are 'const', 'volative', pointer, reference or any legal combination thereof. More...
|
|
struct | is_string |
| Check if a type T is a string-like type, i.e. std::basic_string, const char*, char*, or basic_string_view. More...
|
|
struct | is_string< std::basic_string< Ts... > > |
| Overload of is_string for basic_string. More...
|
|
struct | is_string< std::basic_string_view< Ts... > > |
| Overload of is_string for basic_string_view. More...
|
|
struct | is_string< const char * > |
| Overload of is_string for pure const char*. More...
|
|
struct | is_string< char * > |
| Overload of is_string for pure char*. More...
|
|
struct | is_iterable |
| Check if a type T is iterable, i.e., if it defines T::iterable. More...
|
|
struct | is_iterable< T, std::void_t< typename T::iterator > > |
| Check if a type T is iterable, i.e., if it defines T::iterable. More...
|
|
struct | is_container |
| Check if a type is a container type, which does not include string types. More...
|
|
struct | is_container< T, std::void_t< std::enable_if_t< is_iterable_v< remove_qualifier_t< T > > and not is_string_v< remove_qualifier_t< T > >, int > > > |
| Check if a type T is a container type. A container for us is every iterable that is not a string. More...
|
|
struct | is_associative_container |
| Check if a type T is an associative container type, i.e. a container type T that defines T::key_type and T::key_compare. Check out https://en.cppreference.com/w/cpp/named_req/AssociativeContainer for more details. More...
|
|
struct | is_associative_container< T, std::void_t< std::enable_if_t< is_container_v< T >, int >, typename T::key_type, typename T::key_compare > > |
| Check if a type T is an associative container type, i.e. a container type T that defines T::key_type and T::key_compare. Check out https://en.cppreference.com/w/cpp/named_req/AssociativeContainer for more details. More...
|
|
struct | is_unordered_associative_container |
| Check if a type T is an unordered associative container type, i.e. a container type T that defines T::key_type, T::value_type and T::hasher. Check out https://en.cppreference.com/w/cpp/named_req/UnorderedAssociativeContainer for more details. More...
|
|
struct | is_unordered_associative_container< T, std::void_t< std::enable_if_t< is_container_v< T >, int >, typename T::key_type, typename T::value_type, typename T::hasher > > |
| Check if a type T is an unordered associative container type, i.e. a container type T that defines T::key_type, T::value_type and T::hasher. Check out https://en.cppreference.com/w/cpp/named_req/UnorderedAssociativeContainer for more details. More...
|
|
struct | is_linear_container |
| Check if a type T is a linear container. A linear container for us is any type T that is a container and neither an associative nor an unordered associative container. More...
|
|
struct | is_linear_container< T, std::void_t< std::enable_if_t< not is_associative_container_v< T > and not is_unordered_associative_container_v< T > and is_container_v< T >, int > > > |
| Check if a type T is a linear container. A linear container for us is any type T that is a container and neither an associative nor an unordered associative container. More...
|
|
struct | is_random_access_container |
| Check if a type T is a random access container, i.e., any container type T that has an iterator tagged with std::random_access_iterator_tag. More...
|
|
struct | is_random_access_container< T, std::void_t< std::enable_if_t< is_linear_container_v< T > and std::is_convertible_v< typename std::iterator_traits< typename T::iterator >::iterator_category, std::random_access_iterator_tag > > > > |
| Check if a type T is a random access container, i.e., any container type T that has an iterator tagged with std::random_access_iterator_tag. More...
|
|
struct | has_vertex_descriptor |
| Check if a type T has a vertex descriptor. More...
|
|
struct | has_vertex_descriptor< T, std::void_t< typename T::vertex_descriptor > > |
| Check if a type T has a vertex descriptor. More...
|
|
struct | has_edge_descriptor |
| Check if a type T has a edge descriptor. More...
|
|
struct | has_edge_descriptor< T, std::void_t< typename T::edge_descriptor > > |
| Check if a type T has an edge descriptor. More...
|
|
struct | is_graph |
| Check if some type T is a graph by checking if it has edge - and vertex_descriptors. More...
|
|
struct | is_graph< T, std::void_t< std::enable_if_t< has_edge_descriptor_v< T > and has_vertex_descriptor_v< T >, int > > > |
| Check if some type T is a graph by checking if it has edge_- and vertex_descriptors. More...
|
|
struct | get_size |
| Return the size of a Type T containing other types at compile time. If no object for which an overload exists is passed, the get_size::value defaults to 1, indicating a scalar. If you want to have another type to be usable with get_size, provide an overload for it as shown by the various overloads existing for get_size already. More...
|
|
struct | get_size< std::array< T, N > > |
| Overload for std::array. More...
|
|
struct | get_size< std::tuple< Ts... > > |
| Overload for std::tuple. More...
|
|
struct | get_size< std::pair< A, B > > |
| Overload for std::pair. More...
|
|
struct | get_size< boost::hana::tuple< Ts... > > |
| Overload for hana tuples. More...
|
|
struct | get_size< arma::mat::fixed< N, M > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::imat::fixed< N, M > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::s32_mat::fixed< N, M > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::u32_mat::fixed< N, M > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::umat::fixed< N, M > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::fmat::fixed< N, M > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::vec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::ivec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::s32_vec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::uvec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::u32_vec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::fvec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::rowvec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::irowvec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::s32_rowvec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::u32_rowvec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::urowvec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | get_size< arma::frowvec::fixed< N > > |
| overload of get_size for armadillo type More...
|
|
struct | is_array_like |
| Check if a given type is homogeneous and has a size which is a compile time constant. The most common type which fulfils these requirements is std::array, hence the name 'is_array_like'. For a new type to be considered array_like, this functor has to be overloaded together with get_size. More...
|
|
struct | has_static_size_base |
| Determine if type T is 'tuplelike'. This is not intended to be used explicitly, refer to 'has_static_size', which serves this purpose. More...
|
|
struct | has_static_size |
| Determine if type T is tuple_like, i.e., has a compile time constant size which is smaller than std::numeric_limits< std::size_t >::max() = 18446744073709551615. This size is unreasonable and hence used to check invalidity. More...
|
|
class | is_callable |
| Check if a type T is callable, i.e., if it has. More...
|
|
class | is_callable< T, std::void_t< std::enable_if_t< std::is_class_v< std::decay_t< T > >, T > > > |
| Determines if the type T implements a call operator with arbitrary signature. More...
|
|
struct | Nothing |
| Represent a type that does nothing and represents nothing, hence can be used in metaprogramming whenever no action is desired. More...
|
|
|
template<typename T , typename U > |
std::ostream & | operator<< (std::ostream &out, const std::pair< T, U > &pair) |
| pretty print a pair More...
|
|
template<class T > |
std::enable_if_t< is_container_v< T >, std::ostream & > | operator<< (std::ostream &out, const T &container) |
|
std::ostream & | operator<< (std::ostream &out, const std::vector< bool > &container) |
| Output container to stream 'out'- specialization for vector of booleans. Note that a vector of booleans is not the same as a vector of any other type because it does some storage optimization to make booleans take up single bits only. More...
|
|
template<template< typename, typename, typename... > class MapType, typename Key , typename Value , typename... Args> |
std::enable_if_t< is_associative_container_v< MapType< Key, Value, Args... > > or is_unordered_associative_container_v< MapType< Key, Value, Args... > >, std::ostream & > | operator<< (std::ostream &out, const MapType< Key, Value, Args... > &map) |
| Output (unordered) associative containers to an std::ostream. More...
|
|
template<typename... Types> |
std::ostream & | operator<< (std::ostream &ostr, std::tuple< Types... > tuple) |
| Report a tuple to an outstream, This works by piping the single elements inside the tuple to the stream, and therefor requires operator<< for the underlying types to be defined. More...
|
|
template<typename T > |
std::string | str (T &&t) |
| Turn any object for which operator<< exists into a string. Mostly useful for logging data via spdlog which for instance cannot log containers per default. More...
|
|