#include <apibase.h>
Helper class to work with parameter packs. IndexOf supports finding the index of a type in the argument list, At supports indexing into the list, ContainsAll implements a subset test:
| T | The types of the parameter pack. |
Classes | |
| struct | At |
| struct | IndexOf |
Public Types | |
| using | FirstType = void |
| using | RestPack = ParameterPack<> |
| template<typename... X> | |
| using | ContainsAll = maxon::details::ParameterPackContainsAll< ParameterPack, X... > |
| template<template< typename... > class TEMPLATE, typename... X> | |
| using | Apply = TEMPLATE< X... > |
| template<template< typename... > class TEMPLATE, typename... X> | |
| using | ApplyAppend = TEMPLATE< X... > |
| template<typename... X> | |
| using | Append = ParameterPack< X... > |
| template<typename PACK > | |
| using | AppendPack = PACK |
Static Public Member Functions | |
| template<Int OFFSET = 0, typename LAMBDA > | |
| static ResultOk< void > | ForEach (const LAMBDA &lambda) |
Static Public Attributes | |
| static constexpr Int | COUNT |
| using FirstType = void |
The first type of this parameter pack.
| using RestPack = ParameterPack<> |
| using ContainsAll = maxon::details::ParameterPackContainsAll<ParameterPack, X...> |
ContainsAll checks if this parameter pack contains all types X. Besides a list of types X can also be a ParameterPack itself.
| X | Types to check. This can either be a list of types, or a single ParameterPack. |
| using Apply = TEMPLATE<X...> |
| using ApplyAppend = TEMPLATE<X...> |
| using Append = ParameterPack<X...> |
A type alias for a ParameterPack of the types T... and X... I.e., ParameterPack<T...>::Append<X...> is an alias for ParameterPack<T..., X...>.
| X | Types to append to this ParameterPack. |
| using AppendPack = PACK |
A type alias for a ParameterPack of the types of this ParameterPack and PACK. I.e., ParameterPack<T...>::AppendPack<ParameterPack<X...>> is an alias for ParameterPack<T..., X...>.
| PACK | Another ParameterPack to append to this ParameterPack. |
Calls lambda for each type of the parameterpack. lambda is called with a single argument of a type which has index and type members and also a constexpr conversion function to Int which returns the index. member type alias of name #type:
| [in] | lambda | Index within the parameter pack. |
|
staticconstexpr |
The number of types of this parameter pack.