Maison >développement back-end >C++ >Les fonctions Lambda peuvent-elles être utilisées dans les expressions « constexpr » ?
Prise en charge de Constexpr pour les fonctions Lambda
Question originale :
Les fonctions lambda peuvent-elles utiliser le constexpr mot-clé ?
Réponse :
En C 14, les fonctions lambda ne sont pas prises en charge par constexpr. Cependant, cela est appelé à changer avec l’adoption du N4487. Cette proposition permettrait des lambdas et des opérations de type fermeture spécifiques dans des expressions constantes.
Explication :
Sous [expr.const]/(2.6) de la norme C 14, les lambdas sont exclus des expressions constantes. Cette limitation est décrite dans N4487 :
"Cette proposition suggère d'autoriser les **expressions lambda** dans les expressions constantes, supprimant ainsi une restriction existante. Les auteurs proposent que certaines **expressions lambda** et opérations sur certains objets de fermeture soient autorisés à apparaître dans des expressions constantes.
Si le spécificateur constexpr est omis du déclarateur lambda, l'opérateur d'appel de fonction généré devient constexpr tant qu'il répond aux exigences d'une fonction constexpr. Ce comportement est similaire à l'inférence constexpr pour les constructeurs et les opérateurs d'affectation implicitement définis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!