Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Možnost kompilátoru /Zc:lambda umožňuje splňovat podporu gramatiky a zpracování lambda.
Syntaxe
/Zc:lambda[-]
Poznámky
Možnost /Zc:lambda kompilátoru umožňuje odpovídající procesor lambda. Parsuje a implementuje kód lambda podle standardu C++. Tato možnost je ve výchozím nastavení vypnutá, která používá starší procesor lambda. Pomocí této možnosti můžete povolit kontroly syntaxe v režimu shody obecných lambda při použití výchozích /std:c++14 možností nebo možností kompilátoru /std:c++17 .
/Zc:lambda je automaticky povolena pomocí /std:c++20možnosti , [/std:c++latest] (std-specify-language-standard-version.md) /permissive-a /experimental:module možnosti. Explicitně ho můžete zakázat pomocí ./Zc:lambda-
Tato /Zc:lambda možnost je dostupná od sady Visual Studio 2019 verze 16.8. Je k dispozici od /experimental:newLambdaProcessor sady Visual Studio 2019 verze 16.3, ale tato kontrola pravopisu je teď zastaralá.
Starší procesor lambda má při analýze a kompilaci lambda omezení. Například tento odpovídající kód se správně zkompiluje pod /Zc:lambda, ale hlásí chyby v /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
}
Starší procesor lambda tento kód zkompiluje bez upozornění, ale nový procesor lambda způsobí chybu C2760:
void f2() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
Tento příklad ukazuje správnou syntaxi, kterou teď kompilátor vynucuje v části /Zc:lambda:
void f3() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}
Nastavení této možnosti kompilátoru v sadě Visual Studio
Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.
Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.
Přidejte
/Zc:lambdanebo/Zc:lambda-do podokna Další možnosti: