Classes
Type lists

Classes

struct  blaze::Append< TL, T >
 Appending a type to a type list.The Append class can be used to append the data type T to a type list TL. In order to append a data type, the Append class has to be instantiated for a particular type list and another type. The following example gives an impression of the use of the Append class: More...
 
struct  blaze::Contains< TL, T >
 Searching a type list.The Contains class can be used to search the type list for a particular type Type. In contrast to the IndexOf class, the Contains class does not evaluate the index of the type but only checks whether or not the type is contained in the type list. Additionally, in contrast to the ContainsRelated class, the Contains class strictly searches for the given type Type and not for a related data type. In case the type is contained in the type list, the value member enumeration is set to true, else it is set to false. In order to check whether a type is part of a type list, the Contains class has to be instantiated for a particular type list and another type. The following example gives an impression of the use of the Contains class: More...
 
struct  blaze::ContainsRelated< TL, T >
 Searching a type list.The ContainsRelated class can be used to search the type list for a type related to Type. In contrast to the Contains class, the ContainsRelated class only searches for a type the given data type Type can be converted to. In case a related type is found in the type list, the value member enumeration is set to true, else it is set to false. In order to check whether a related type is contained in the type list, the ContainsRelated class has to be instantiated for a particular type list and another type. The following example gives an impression of the use of the ContainsRelated class: More...
 
struct  blaze::Erase< TL, T >
 Erasing the first occurrence of a type from a type list.The Erase class can be used to erase the first occurrence of data type T from a type list TL. In order to erase the first occurrence of a data type, the Erase class has to be instantiated for a particular type list and another type. The following example gives an impression of the use of the Erase class: More...
 
struct  blaze::EraseAll< TL, T >
 Erasing all occurrences of a type from a type list.The EraseAll class can be used to erase all occurrences of data type Type from a type list TList. In order to erase all occurrences of a data type, the EraseAll class has to be instantiated for a particular type list and another type. The following example gives an impression of the use of the EraseAll class: More...
 
struct  blaze::IndexOf< TL, T >
 Searching a type list.The IndexOf class can be used to search the type list for a particular type Type. In contrast to the Contains and the ContainsRelated classes, the IndexOf class evaluates the index of the given type in the type list. In case the type is contained in the type list, the value member represents the index of the queried type. Otherwise the value member is set to the length of the type list. In order to search for a type, the IndexOf class has to be instantiated for a particular type list and a search type. The following example gives an impression of the use of the IndexOf class: More...
 
struct  blaze::Length< TL >
 Calculating the length of a type list.The Length class can be used to obtain the length of a type list (i.e. the number of contained types). In order to obtain the length of a type list, the Length class has to be instantiated for a particular type list. The length of the type list can be obtained using the member enumeration value. The following example gives an impression of the use of the Length class: More...
 
struct  blaze::TypeAt< TL, Index >
 Indexing a type list.The TypeAt class can be used to access a type list at a specified position to query the according type. In order to index a type list, the TypeAt class has to be instantiated for a particular type list and an index value. The indexed type is available via the member type definition Type. The following example gives an impression of the use of the TypeAt class: More...
 
struct  blaze::TypeList< Ts >
 Implementation of a type list.The TypeList class template represents a list of data types of arbitrary size. The following example gives an impression how type lists are used and manipulated: More...
 
struct  blaze::Unique< TL >
 Erasing all duplicates from a type list.The Unique class can be used to erase all duplicates from a type list TList. In order to erase all duplicates, the Unique class has to be instantiated for a particular type list. The following example gives an impression of the use of the Unique class: More...
 

Detailed Description

Type lists provide the functionality to create lists of data types. In constrast to lists of data values (as for instance the std::list class template), type lists are created at compile time, not at run time. The following example demonstrates, how type lists are created and manipulated:

// Creating a type list consisting of two fundamental floating point data types
// Appending a type to the type list
using Floats = blaze::Append< Tmp, long double >::Type; // Type list contains all floating point data types
// Calculating the length of the type list (at compile time!)
const int length = blaze::Length< Floats >::value; // Value evaluates to 3
// Accessing a specific type of the type list via indexing
// Searching the type list for a specific type
constexpr bool index1 = blaze::Contains< Floats, double >::value; // Value evaluates to 1
constexpr bool index2 = blaze::Contains< Floats, int >::value; // Value evaluates to 0
// Estimating the index of a specific type in the type list
constexpr bool index3 = blaze::IndexOf< Floats, double >::value; // Value evaluates to 1
constexpr bool index4 = blaze::IndexOf< Floats, int >::value; // Value evaluates to 3
// Erasing the first occurrence of float from the type list
// Removing all duplicates from the type list
using NoDuplicates = blaze::Unique< Floats >::Type;