Range-v3: Composition

Range-v3 Range algorithms, views, and actions for the Standard Library |

Modules | Classes | Typedefs
Composition
Meta » Trait

Trait composition. More...

## Modules
| lazy

## Classes
struct | meta::bind_back< Fn, Us >
| An invocable that partially applies the invocable `Fn` by binding the arguments `Us` to the back of `Fn`. More...
struct | meta::bind_front< Fn, Ts >
| An invocable that partially applies the invocable `Fn` by binding the arguments `Ts` to the front of `Fn`. More...
struct | meta::compose_< Fns >
| Compose the Invocables `Fns` in the parameter pack `Ts`. More...
struct | meta::flip< Fn >
| An invocable that reverses the order of the first two arguments. More...
struct | meta::quote< C >
| Turn a template `C` into an invocable. More...
struct | meta::quote_i< T, C >
| Turn a template `C` taking literals of type `T` into a invocable. More...

## Typedefs
template<invocable Fn, invocable Q = quote<list>>
using | meta::curry = compose< Fn, Q >
| An invocable that takes a bunch of arguments, bundles them into a type list, and then calls the invocable `Fn` with the type list `Q`.
template<invocable ... Fns>
using | meta::on_ = detail::on_< Fns... >
| Use as `on<Fn, Gs...>`. Creates an invocable that applies invocable `Fn` to the result of applying invocable `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 an invocable. More...
template<typename T , template< T... > class C>
using | meta::quote_trait_i = compose< quote< _t >, quote_i< T, C > >
| Turn a trait template `C` taking literals of type `T` into an invocable.
template<invocable Fn>
using | meta::uncurry = bind_front< quote< apply >, Fn >
| An invocable that takes a type list, unpacks the types, and then calls the invocable `Fn` with the types.

## Detailed Description

Trait composition.

## 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 an invocable.

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