Share via


expressions lambda constexpr en C++

Visual Studio 2017 version 15.3 et ultérieure (disponible en /std:c++17 mode et versions ultérieures) : une expression lambda peut être déclarée comme constexpr ou utilisée dans une expression constante lorsque l’initialisation de chaque membre de données qu’il capture ou introduit est autorisée dans une expression constante.

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

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

Une lambda est implicitement constexpr si son résultat répond aux exigences d’une constexpr fonction :

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

    constexpr int response = answer(10);

Si une expression lambda est implicitement ou explicitement constexpr, et que vous la convertissez en pointeur de fonction, la fonction résultante est également constexpr:

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

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

Voir aussi

Informations de référence sur le langage C++
Objets de fonction dans la bibliothèque standard C++
Appel de fonction
for_each