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

Description

Trait composition.

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.
 

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>, "");