meta::defer< C, Ts > Struct Template Reference
Meta » Trait » Invocation

A wrapper that defers the instantiation of a template `C` with type parameters `Ts` in a `lambda` or `let` expression. More...

`#include <meta/meta.hpp>`

Inheritance diagram for meta::defer< C, Ts >:

## Detailed Description

### template<template< typename... > class C, typename... Ts>
struct meta::defer< C, Ts >

A wrapper that defers the instantiation of a template `C` with type parameters `Ts` in a `lambda` or `let` expression.

In the code below, the lambda would ideally be written as `lambda<_a,_b,push_back<_a,_b>>`, however this fails since `push_back` expects its first argument to be a list, not a placeholder. Instead, we express it using `defer` as follows:

template <typename L>
using reverse = reverse_fold<L, list<>, lambda<_a, _b, defer<push_back, _a, _b>>>;
meta::reverse
_t< detail::reverse_< L > > reverse
Return a new meta::list by reversing the elements in the list L.
Definition: meta.hpp:2996