C++ 中的 constexpr Lambda 運算式

Visual Studio 2017 15.3 版和更新版本 (可在 /std:c++17 模式和更新版本中使用):在常數運算式中允許初始化擷取或引進的每個資料成員時,可能會宣告為 constexpr 或使用 Lambda 運算式。

    int y = 32;
    auto answer = [y]() constexpr
    {
        int x = 10;
        return y + x;
    };

    constexpr int Increment(int n)
    {
        return [n] { return n + 1; }();
    }

如果 Lambda 的結果符合函式的需求, constexpr 則為隱含 constexpr 方式:

    auto answer = [](int n)
    {
        return 32 + n;
    };

    constexpr int response = answer(10);

如果 Lambda 是隱含或明確 constexpr ,而且您會將它轉換成函式指標,則產生的函式也會 constexpr 是 :

    auto Increment = [](int n)
    {
        return n + 1;
    };

    constexpr int(*inc)(int) = Increment;

另請參閱

C++ 語言參考
C++ 標準程式庫的函式物件
函式呼叫
for_each