Composition
Meta » Trait

## Description

Trait composition.

## Modules

| lazy

## Classes

struct | meta::bind_back< F, Us >
| A Callable that partially applies the Callable `F` by binding the arguments `Us` to the back of `F`. More...
struct | meta::bind_front< F, Ts >
| A Callable that partially applies the Callable `F` by binding the arguments `Ts` to the front of `F`. More...
struct | meta::compose< Fs >
| Compose the Callables `Fs` in the parameter pack `Ts`. More...
struct | meta::flip< F >
| A Callable that reverses the order of the first two arguments. More...
struct | meta::quote< C >
| Turn a class template or alias template `C` into a Callable. More...
struct | meta::quote_i< T, C >
| Turn a class template or alias template `C` taking literals of type `T` into a Callable. More...

## Typedefs

template<typename F , typename Q = quote<list>>
using | meta::curry = compose< F, Q >
| A Callable that takes a bunch of arguments, bundles them into a type list, and then calls the Callable `F` with the type list `Q`.
template<typename... Fs>
using | meta::on = detail::on_< Fs... >
| Use as `on<F, Gs...>`. Creates an Callable that applies Callable `F` to the result of applying Callable `compose<Gs...>` to all the arguments.
template<template< typename... > class C>
using | meta::quote_trait = compose< quote< _t >, quote< C > >
| Turn a trait template `C` into a Callable. More...
template<typename T , template< T... > class C>
using | meta::quote_trait_i = compose< quote< _t >, quote_i< T, C > >
| Turn a trait `C` taking literals of type `T` into a Callable. More...
template<typename F >
using | meta::uncurry = bind_front< quote< apply >, F >
| A Callable that takes a type list, unpacks the types, and then calls the Callable `F` with the types.

## Typedef Documentation

## quote_trait

template<template< typename... > class C>

using meta::quote_trait = typedef compose<quote<_t>, quote<C> >

`#include <meta/meta.hpp>`

Turn a trait template `C` into a Callable.

static_assert(std::is_same<invoke<quote_trait<std::add_const>, int>, int const>::value, "");

## quote_trait_i

template<typename T , template< T... > class C>

using meta::quote_trait_i = typedef compose<quote<_t>, quote_i<T, C> >

`#include <meta/meta.hpp>`

Turn a trait `C` taking literals of type `T` into a Callable.

See also
  'meta::quote_trait'