Maison >développement back-end >C++ >Les fonctions Lambda peuvent-elles être utilisées dans les expressions « constexpr » ?

Les fonctions Lambda peuvent-elles être utilisées dans les expressions « constexpr » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 01:15:28521parcourir

Can Lambda Functions Be Used in `constexpr` Expressions?

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!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn