|
| template<typename... Bools> |
| using | and_ = t_< detail::and_impl< Bools...>> |
| |
|
template<typename F , typename... Args> |
| using | apply = typename F::template apply< Args...> |
| | Apply an alias class.
|
| |
|
template<typename F , typename Args > |
| using | apply_list = apply< detail::apply_list_< F, Args >> |
| | Apply an alias class, exploding the list of args.
|
| |
|
template<bool V> |
| using | bool_ = std::integral_constant< bool, V > |
| | Alias template to simplify creating a boolean integral constant.
|
| |
|
template<typename... Ts> |
| using | coerce_list = t_< list< Ts...>> |
| | Will turn whatever is passed into it into the simplest list.
|
| |
| template<typename... Lists> |
| using | concat = t_< detail::concat_< Lists...>> |
| |
|
template<typename Haystack , typename Needle > |
| using | contains = apply_list< quote< or_ >, transform< Haystack, detail::is_< Needle >>> |
| | Determines if type Needle is in the list Haystack - is an alias for a type that inherits std::true_type or std::false_type.
|
| |
|
template<typename List , typename Needle > |
| using | find_first = t_< detail::find_first_impl< Needle, 0, List >> |
| | Returns the zero-based index of the first instance of Needle in List. Will fail to compile if not found.
|
| |
|
template<typename List , typename State , typename Fun > |
| using | fold = t_< detail::fold_< List, State, Fun >> |
| | Fold the list (right) with the given alias class and initial state.
|
| |
| template<typename T > |
| using | has_type = t_< detail::has_type_< T >> |
| |
| template<typename... Args> |
| using | if_ = t_< detail::if_impl< Args...>> |
| |
|
template<bool If, typename... Args> |
| using | if_c = t_< detail::if_impl< bool_< If >, Args...>> |
| | Select one type or another depending on a compile-time Boolean value.
|
| |
|
template<typename Bool > |
| using | not_ = bool_<!Bool::value > |
| | Logical not on a single boolean.
|
| |
| template<typename... Bools> |
| using | or_ = t_< detail::or_impl< Bools...>> |
| |
|
template<template< typename...> class C> |
| using | quote_trait = compose< quote< t_ >, quote< C >> |
| | Turn a trait C into a Alias Class.
|
| |
|
template<typename... Ts> |
| using | size = detail::size< coerce_list< Ts...>> |
| | Get the size of a list (number of elements.)
|
| |
|
template<typename... Ts> |
| using | length = size< coerce_list< Ts...>> |
| | Synonym for typepack::size.
|
| |
|
template<std::size_t V> |
| using | size_t_ = std::integral_constant< std::size_t, V > |
| | Alias template to simplify creating an integral constant of size_t.
|
| |
|
template<typename... List> |
| using | head = typename detail::split_list_< List...>::head |
| | Get the first element of a list.
|
| |
|
template<typename... List> |
| using | tail = typename detail::split_list_< List...>::tail |
| | Get the list without its first element.
|
| |
| template<typename T > |
| using | t_ = typename T::type |
| | A convenience alias template to extract the nested type within the supplied T. More...
|
| |
| template<typename List , typename Fun > |
| using | transform = t_< detail::transform_< List, Fun >> |
| |
|
template<typename... Ts> |
| using | void_ = apply< always< void >, Ts...> |
| | An alias for void.
|
| |
A simple argument-pack-based metaprogramming library, inspired by and based partially on https://ericniebler.github.io/meta.
It includes an as-needed subset of the features of meta, modified as needed to build on MSVC 2013, as well as additional functionality not found in meta.