Est-ce que les compilateurs C++11 peuvent (et le font-ils) remarquer qu'une fonction est constexpr et les traiter en tant que telles même si elles ne sont pas déclarées comme telles constexpr ?
Je démontrais l'utilisation de constexpr à quelqu'un en utilisant l'exemple directement depuis Wikipédia :
int get_five() {return 5;}
int some_value[get_five() + 7]; // Créer un tableau de 12 entiers. C++ mal formé
À ma grande surprise, le compilateur a accepté cela. J'ai ensuite modifié get_five() pour prendre quelques paramètres int, les multiplier et retourner le résultat tout en n'étant pas explicitement déclaré comme constexpr. Le compilateur a également accepté cela. Il semble que si le compilateur peut le faire, il n'y a pas beaucoup d'intérêt à avoir les restrictions nécessaires pour déclarer quelque chose explicitement constexpr.