/Zc:lambda
(Włącz zaktualizowany procesor lambda)
Opcja /Zc:lambda
kompilatora umożliwia zgodność z gramatyką lambda i obsługą przetwarzania.
Składnia
/Zc:lambda
[-
]
Uwagi
Opcja /Zc:lambda
kompilatora włącza zgodny procesor lambda. Analizuje i implementuje kod lambda zgodnie ze standardem C++. Ta opcja jest domyślnie wyłączona, która używa starszego procesora lambda. Użyj tej opcji, aby włączyć sprawdzanie składni trybu zgodności ogólnych lambd podczas korzystania z opcji domyślnych /std:c++14
lub kompilatora /std:c++17
.
/Zc:lambda
program jest automatycznie włączany przez opcje /std:c++20
, [/std:c++latest
] (std-specify-language-standard-version.md), /permissive-
i /experimental:module
. Można ją jawnie wyłączyć przy użyciu polecenia /Zc:lambda-
.
Ta /Zc:lambda
opcja jest dostępna od wersji 16.8 programu Visual Studio 2019. Jest ona dostępna od /experimental:newLambdaProcessor
wersji 16.3 programu Visual Studio 2019, ale ta pisownia jest teraz przestarzała.
Starszy procesor lambda ma ograniczenia podczas analizowania i kompilowania lambda. Na przykład ten zgodny kod kompiluje się poprawnie w obszarze , ale zgłasza błędy w obszarze /Zc:lambda
/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
}
Starszy procesor lambda kompiluje ten kod bez ostrzeżeń, ale nowy procesor lambda generuje błąd C2760:
void f2() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
W tym przykładzie przedstawiono poprawną składnię, która jest wymuszana przez kompilator w obszarze /Zc:lambda
:
void f3() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}
Aby ustawić tę opcję kompilatora w programie Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).
Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.
Dodaj
/Zc:lambda
lub/Zc:lambda-
do okienka Dodatkowe opcje: .