Skip to content

Latest commit

 

History

History
62 lines (55 loc) · 1.7 KB

File metadata and controls

62 lines (55 loc) · 1.7 KB
title constexpr Lambda Expressions in C++ | Microsoft Docs
ms.custom
ms.date 07/19/2017
ms.reviewer
ms.suite
ms.technology
cpp-language
ms.tgt_pltfrm
ms.topic language-reference
dev_langs
C++
helpviewer_keywords
lambda expressions [C++], constexpr
ms.assetid b56346cd-fbff-475f-aeaa-ed2010c6d6f7
caps.latest.revision 0
author mikeblome
ms.author mblome
manager ghogen

constexpr Lambda Expressions in C++

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;

See Also

C++ Language Reference
Function Objects in the C++ Standard Library
Function Call
for_each