Range-v3
Range algorithms, views, and actions for the Standard Library
 
Loading...
Searching...
No Matches
Composition

Trait composition More...

Topics

 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< class >
 Turn a template C into an invocable. More...
 
struct  meta::quote_i< T, F >
 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.
 
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 = 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>, "");