metaprogramming.h File Reference

CPP API: metaprogramming.h File Reference
metaprogramming.h File Reference
#include <type_traits>
#include <utility>
Include dependency graph for metaprogramming.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  mio::details::Empty
 
struct  mio::has_duplicates< Types >
 Tests whether the list Types contains any type multiple times. More...
 
struct  mio::index_of_type< Type, Types >
 Finds the index of a Type in the list Types. More...
 
struct  mio::is_ad_type< T, class >
 Detects whether a type is an automatic differentiation (AD) type. More...
 
struct  mio::is_ad_type< ad::internal::active_type< Value, Tape > >
 
struct  mio::is_type_in_list< Type, Types >
 Tests whether Type is in the list Types. More...
 
struct  mio::details::NoCopy
 
struct  mio::type_at_index< Index, Types >
 Finds the type at the Index-th position in the list Types. More...
 
struct  mio::details::type_at_index_impl< Index, Head, Tail >
 Get the type at position Index of list (Head, Tail...). More...
 
struct  mio::details::type_at_index_impl< 0, Head, Tail... >
 

Namespaces

 ad
 
 ad::internal
 
 mio
 A collection of classes to simplify handling of matrix shapes in meta programming.
 
 mio::details
 

Typedefs

template<class T >
using mio::is_64bit_integral = std::integral_constant< bool,(std::is_integral_v< T > &&sizeof(T)==8)>
 Bool constant to check whether T is an integral type of 64 bits. Used for Json library. More...
 
template<class T >
using mio::is_small_integral = std::integral_constant< bool,(std::is_integral_v< T > &&sizeof(T)<=4)>
 Bool constant to check whether T is an integral type of 32 bits or less. Used for Json library. More...
 
template<bool Cond>
using mio::not_copyable_if = std::conditional< Cond, details::NoCopy, details::Empty >
 Defines a type that is not copy constructible or assignable if the specified condition is true. More...
 
template<bool Cond>
using mio::not_copyable_if_t = typename not_copyable_if< Cond >::type
 equivalent to not_copyable_if<Cond>::type. More...
 
template<std::size_t Index, class... Types>
using mio::type_at_index_t = typename type_at_index< Index, Types... >::type
 The type at the Index-th position in the list Types. More...
 

Functions

template<std::size_t Size, class Type >
constexpr std::size_t mio::details::index_of_impl ()
 Recursively searches the list (Head, Tail...) for Type. More...
 
template<std::size_t Size, class Type , class Head , class... Tail>
constexpr std::size_t mio::details::index_of_impl ()
 Recursively searches the list (Head, Tail...) for Type. More...
 

Variables

template<class... Types>
constexpr bool mio::has_duplicates_v = has_duplicates<Types...>::value
 Checks whether Type has any duplicates. More...
 
template<class Type , class... Types>
constexpr std::size_t mio::index_of_type_v = index_of_type<Type, Types...>::value
 The index of Type in the list Types. More...
 
template<class Type , class... Types>
constexpr bool mio::is_type_in_list_v = is_type_in_list<Type, Types...>::value
 Checks whether Type is in the list Types. More...
 
template<class T >
constexpr bool mio::is_ad_type_v = is_ad_type<T>::value