Share via


Expressões lambda constexpr em C++

Visual Studio 2017 versão 15.3 e posterior (disponível no modo /std:c++17 e posterior): uma expressão lambda pode ser declarada como constexpr ou usada em uma expressão de constante quando a inicialização de cada membro de dados que ela captura ou introduz é permitida dentro de uma expressão de constante.

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

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

Uma lambda será implicitamente constexpr se o seu resultado atender aos requisitos de uma função constexpr:

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

    constexpr int response = answer(10);

Se uma lambda for implicitamente ou explicitamente constexpr e você convertê-la em um ponteiro de função, a função resultante também será constexpr:

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

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

Confira também

Referência da linguagem C++
Objetos de função na Biblioteca Padrão C++
Chamada de função
for_each