/Zc:lambda
(Abilitare il processore lambda aggiornato)
L'opzione /Zc:lambda
del compilatore consente di supportare la grammatica lambda e l'elaborazione conformi.
Sintassi
/Zc:lambda
[-
]
Osservazioni:
L'opzione /Zc:lambda
del compilatore abilita il processore lambda conforme. Analizza e implementa il codice lambda in base allo standard C++. Questa opzione è disattivata per impostazione predefinita, che usa il processore lambda legacy. Usare questa opzione per abilitare i controlli della sintassi in modalità di conformità delle espressioni lambda generiche quando si usano le opzioni predefinite /std:c++14
o del /std:c++17
compilatore.
/Zc:lambda
viene abilitato automaticamente dalle /std:c++20
opzioni , [/std:c++latest
] (std-specify-language-standard-version.md), /permissive-
e /experimental:module
. È possibile disabilitarla in modo esplicito usando /Zc:lambda-
.
L'opzione /Zc:lambda
è disponibile a partire da Visual Studio 2019 versione 16.8. È disponibile a /experimental:newLambdaProcessor
partire da Visual Studio 2019 versione 16.3, ma questa ortografia è ora deprecata.
Il processore lambda legacy presenta limitazioni quando analizza e compila espressioni lambda. Ad esempio, questo codice conforme viene compilato correttamente in /Zc:lambda
, ma segnala errori in /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
}
Il processore lambda legacy compila questo codice senza avvisi, ma il nuovo processore lambda genera l'errore C2760:
void f2() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
Questo esempio mostra la sintassi corretta, ora applicata dal compilatore in /Zc:lambda
:
void f3() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}
Per impostare questa opzione del compilatore in Visual Studio
Aprire la finestra di dialogo Pagine delle proprietà del progetto. Per informazioni dettagliate, vedere Impostare il compilatore e le proprietà di compilazione.
Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.
Aggiungere
/Zc:lambda
o/Zc:lambda-
al riquadro Opzioni aggiuntive: .
Vedi anche
/Zc
(Conformità)
/std
(Specificare la versione standard della lingua)