Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
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
Ö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:lambdaOptionen" hinzu oder/Zc:lambda-fügen Sie sie hinzu.
Siehe auch
/Zc (Konformität)
/std (Standardversion für die Sprache festlegen)