65 votes

Constexpr est-il pris en charge avec les fonctions/expressions lambda ?

struct Test
{
  static const int value = []() -> int { return 0; } ();
};

Avec gcc-4.6, j'obtiens quelque chose comme, error: function needs to be constexpr . J'ai essayé plusieurs combinaisons de mettre constexpr à divers endroits, mais sans succès.

constexpr pris en charge pour les fonctions lambda (indépendamment du type return spécifié ou non) ? Quelle est la bonne syntaxe ?

Un contournement possible ?

27voto

James McNellis Points 193607

Depuis le C++0x FDIS §7.1.5[dcl.constexpr]/1 :

Le constexpr ne doit être appliqué qu'à la définition d'une variable, à la déclaration d'une fonction ou d'un modèle de fonction, ou à la déclaration d'une donnée membre statique d'un type littéral.

Une expression lambda n'est rien de tout cela et ne peut donc pas être déclarée constexpr .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X