////
Copyright 2024 Joaquin M Lopez Munoz

Distributed under the Boost Software License, Version 1.0.

See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt
////

[#lambda]
# Lambda Expressions, <boost/mp11/lambda.hpp>
:toc:
:toc-title:
:idprefix:

## mp_lambda<T>

    template<class T> using mp_lambda = /*...*/;

`mp_lambda<T>` is a quoted metafunction whose nested template `fn<U...>`
returns a type `V` with the same syntactic definition as `T`, except
that occurrences of placeholders in `T` are replaced by the corresponding
element of `U...`. 

For example, `mp_lambda<std::pair<_1, _2*>>::fn<int, char>` is `std::pair<int, char*>`.

Replacement does not happen inside those constituent parts of `T` resulting
from the instantiation of a class template with non-type template parameters.

NOTE: In GCC 4.8, a compiler bug results in `const` and `volatile` qualifiers
being stripped from the returned type `V` (except when they are applied to
function or member function types).

NOTE: `mp_lambda` is not supported in VS2013 and prior due to compiler limitations.
