/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++20
Optionen , [/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:lambda
kompiliert, 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
Ö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).
Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.
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)