29 template<std::
size_t TIndex,
typename TTypeList>
using Nth = std::tuple_element_t<TIndex, Tuple<TTypeList>>;
38 template<
typename TTypeList>
constexpr auto size()
noexcept {
return TTypeList::size; }
53#define EXPAND(CODE) CeresEngine::MPL::ExpandT{0, ((CODE), 0)...};
Concat< TTypeList, TypeList< T > > PushBack
Adds a type to the back of a type list.
Definition TypeListOps.hpp:32
Rename< std::tuple, TTypeList > Tuple
Type list as a tuple.
Definition TypeListOps.hpp:23
Concat< TypeList< T >, TTypeList > PushFront
Adds a type to the front of a type list.
Definition TypeListOps.hpp:35
typename ConcatHelper< TTypeLists... >::type Concat
Interface type alias.
Definition Concat.hpp:20
typename RenameHelper< TNewName, T >::type Rename
Definition Rename.hpp:19
constexpr decltype(auto) forTuple(TFunction &&function, TTuple &&tuple)
Definition MetaFor.hpp:29
Tuple< Map< Type, TTypeList > > TypeTuple
Type list as a tuple of Type<T>.
Definition TypeListOps.hpp:26
Nth< size< TTypeList >() - 1, TTypeList > Tail
Last type of a type list.
Definition TypeListOps.hpp:48
std::tuple_element_t< TIndex, Tuple< TTypeList > > Nth
"Nth" element of a type list.
Definition TypeListOps.hpp:29
Nth< 0, TTypeList > Head
First type of a type list.
Definition TypeListOps.hpp:45
constexpr auto size() noexcept
Size of a type list.
Definition TypeListOps.hpp:38
constexpr void forTypes(TFunction &&mFunction) noexcept
Execute a function for every type in a type list, wrapped in a Type<T>.
Definition TypeListOps.hpp:42
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Definition TypeListOps.hpp:50
ExpandT(std::initializer_list< int > &&)
Definition TypeListOps.hpp:51