Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis 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++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)