| title | constexpr Lambda Expressions in C++ | Microsoft Docs | |
|---|---|---|
| ms.custom | ||
| ms.date | 07/19/2017 | |
| ms.reviewer | ||
| ms.suite | ||
| ms.technology |
|
|
| ms.tgt_pltfrm | ||
| ms.topic | language-reference | |
| dev_langs |
|
|
| helpviewer_keywords |
|
|
| ms.assetid | b56346cd-fbff-475f-aeaa-ed2010c6d6f7 | |
| caps.latest.revision | 0 | |
| author | mikeblome | |
| ms.author | mblome | |
| manager | ghogen |
Visual Studio 2017 version 15.3 and later (available with /std:c++17): A lambda expression may be declared as constexpr or used in a contant expression when the initialization of each data member that it captures or introduces is allowed within a constant expression.
int y = 32;
auto answer = [y]() constexpr
{
int x = 10;
return y + x;
};
constexpr int Increment(int n)
{
return [n] { return n + 1; }();
}
A lambda is implicitly constexpr if its result satisfies the requirements of a constexpr function:
auto answer = [](int n)
{
return 32 + n;
};
constexpr int response = answer(10);If a lambda is implicitly or explicitly constexpr, and you convert it to a function pointer, the resulting function is also constexpr:
auto Increment = [](int n)
{
return n + 1;
};
constexpr int(*inc)(int) = Increment;C++ Language Reference
Function Objects in the C++ Standard Library
Function Call
for_each