/Zc:lambda
(Activer le processeur lambda mis à jour)
L’option /Zc:lambda
du compilateur active la prise en charge de la grammaire et du traitement lambda conformes.
Syntaxe
/Zc:lambda
[-
]
Notes
L’option /Zc:lambda
du compilateur active le processeur lambda conforme. Il analyse et implémente du code lambda en fonction de la norme C++. Cette option est désactivée par défaut, qui utilise le processeur lambda hérité. Utilisez cette option pour activer les vérifications de syntaxe en mode conformité des lambda génériques lorsque vous utilisez les options par défaut /std:c++14
ou du /std:c++17
compilateur.
/Zc:lambda
est automatiquement activé par les /std:c++20
options , [/std:c++latest
] (std-specify-language-standard-version.md), /permissive-
et /experimental:module
les options. Vous pouvez le désactiver explicitement à l’aide /Zc:lambda-
de .
L’option /Zc:lambda
est disponible à partir de Visual Studio 2019 version 16.8. Il est disponible à /experimental:newLambdaProcessor
partir de Visual Studio 2019 version 16.3, mais cette orthographe est désormais déconseillée.
Le processeur lambda hérité présente des limitations lorsqu’il analyse et compile des lambdas. Par exemple, ce code conforme se compile correctement sous /Zc:lambda
, mais signale des erreurs sous /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
}
Le processeur lambda hérité compile ce code sans avertissements, mais le nouveau processeur lambda génère l’erreur C2760 :
void f2() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
Cet exemple montre la syntaxe correcte, désormais appliquée par le compilateur sous /Zc:lambda
:
void f3() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}
Pour définir cette option de compilateur dans Visual Studio
Ouvrez la boîte de dialogue Pages de propriété du projet. Pour plus d’informations, consultez Définir le compilateur C++ et les propriétés de build dans Visual Studio.
Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.
Ajoutez ou
/Zc:lambda-
accédez/Zc:lambda
aux options supplémentaires : volet.
Voir aussi
/Zc
(Conformité)
/std
(Spécifier la version du standard du langage)