Maison >développement back-end >C++ >Les fonctions Lambda peuvent-elles être utilisées avec `constexpr` en C ?
Fonctions Lambda et Constexpr
Question : Est-il possible d'utiliser constexpr avec les fonctions lambda en C ?
Dans l'exemple de code suivant, le compilateur signale une erreur liée à l'exigence d'une fonction constexpr :
<code class="cpp">struct Test { static const int value = []() -> int { return 0; } (); };</code>
Réponse :
Mise à jour ( C 17) : Depuis C 17, les fonctions lambda sont autorisées dans les expressions constantes.
Pré-C 17 : Les lambda ne sont actuellement pas autorisées dans les expressions constantes en C 14. Cependant , une proposition (N4487) a été faite pour permettre à certaines expressions lambda et objets de fermeture d'apparaître dans des expressions constantes.
Si cette proposition est acceptée, elle introduirait les changements suivants :
Ce changement s'alignerait sur le comportement des constructeurs implicitement définis et des fonctions d'opérateur d'affectation, qui peuvent être déduites comme constexpr le cas échéant.
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!