/Zc:lambda (Aktualisierte Lambda-Prozessor aktivieren)

Die /Zc:lambda Compileroption ermöglicht die Einhaltung der Lambda-Grammatik- und Verarbeitungsunterstützung.

Syntax

/Zc:lambda[-]

Hinweise

Die /Zc:lambda Compileroption ermöglicht den konformen Lambda-Prozessor. Es analysiert und implementiert Lambda-Code gemäß dem C++-Standard. Diese Option ist standardmäßig deaktiviert, die den Legacy-Lambda-Prozessor verwendet. Verwenden Sie diese Option, um Konformitätsmodussyntaxprüfungen generischer Lambdas zu aktivieren, wenn Sie die Standard /std:c++14 - oder Compileroptionen /std:c++17 verwenden.

/Zc:lambda wird automatisch durch die /std:c++20Optionen , [/std:c++latest] (std-specify-language-standard-version.md) /permissive-und /experimental:module aktiviert. Sie können sie explizit mithilfe von /Zc:lambda-.

Die /Zc:lambda Option ist ab Visual Studio 2019, Version 16.8, verfügbar. Sie ist ab /experimental:newLambdaProcessor Visual Studio 2019, Version 16.3, verfügbar, diese Schreibweise ist jedoch veraltet.

Der legacy-Lambda-Prozessor hat Einschränkungen, wenn er Lambdas analysiert und kompiliert. Dieser konforme Code wird z. B. ordnungsgemäß unter /Zc:lambdakompiliert, meldet jedoch Fehler unter /Zc:lambda-:

void f1() 
{
    constexpr auto c_value = 1;
    auto func = []()
    {
        return c_value; // error C3493: 'c_value' cannot be implicitly captured
                        // because no default capture mode has been specified
    };
    func(); // error C2064: term does not evaluate to a function taking 0 arguments
}

Der ältere Lambda-Prozessor kompiliert diesen Code ohne Warnungen, aber der neue Lambda-Prozessor erzeugt Fehler C2760:

void f2() {
    auto a = [](auto arg) {
        decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
    };
}

Dieses Beispiel zeigt die richtige Syntax, die nun vom Compiler unter :/Zc:lambda

void f3() {
    auto a = [](auto arg) {
        typename decltype(arg)::Type t;
    };
}

So legen Sie diese Compileroption in Visual Studio fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen erhalten Sie unter Set C++ compiler and build properties in Visual Studio (Festlegen der Compiler- und Buildeigenschaften (C++) in Visual Studio).

  2. Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.

  3. Fügen Sie den Bereich "Zusätzliche /Zc:lambda Optionen" hinzu oder /Zc:lambda- fügen Sie sie hinzu.

Siehe auch

/Zc (Konformität)
/std (Standardversion für die Sprache festlegen)