Condividi tramite


espressioni lambda constexpr in C++

Visual Studio 2017 versione 15.3 e successive (disponibile in /std:c++17 modalità e versioni successive): un'espressione lambda può essere dichiarata come constexpr o usata in un'espressione costante quando l'inizializzazione di ogni membro dati che acquisisce o introduce è consentita all'interno di un'espressione costante.

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

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

Un'espressione lambda è implicitamente constexpr se il risultato soddisfa i requisiti di una constexpr funzione:

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

    constexpr int response = answer(10);

Se un'espressione lambda è implicitamente o esplicitamente constexpre la si converte in un puntatore a funzione, anche la funzione risultante è constexpr:

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

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

Vedi anche

Riferimenti al linguaggio C++
Oggetti funzione della libreria standard C++
Chiamata di funzione
for_each