Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Visual Studio 2017 version 15.3 and later (available in /std:c++17
mode and later): A lambda expression may be declared as constexpr
or used in a constant 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;
See also
C++ Language Reference
Function Objects in the C++ Standard Library
Function Call
for_each