Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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++20opzioni , [/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:lambdao/Zc:lambda-al riquadro Opzioni aggiuntive: .
Vedi anche
/Zc (Conformità)
/std (Specificare la versione standard della lingua)