Je pense que tu raconte n'importe quoi, je n'ai vu nulle part de problèmes d'implémentation du multi-threading dus à constexpr chez les développeurs de gcc.
La norme C++2011 garantit qu'un constructeur déclaré avec constexpr et qui satisfait les conditions requires est initialisé statiquement (donc 100% thread-safe, aucun risque de data races, d'où le data-safety). Par exemple, la norme impose que le constructeur par défaut de std::mutex soit déclaré constexpr (pour rester avec les mutex, ça revient plus ou moins à ce que fait la macro PTHREAD_MUTEX_INITIALIZER dans la bibliothèque Posix Threads).
[^] # Re: Un dernier petit pas pour C++0x
Posté par GeneralZod . En réponse à la dépêche La version 4.6 du compilateur GCC est disponible. Évalué à 1.
Soit tu n'as pas du tout compris la sémantique de constexpr, soit effectivement, je raconte n'importe quoi ...
http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2976.html (document de travail qui explique l'intérêt en général de constexpr dans la bibliothèque standard)
La norme C++2011 garantit qu'un constructeur déclaré avec constexpr et qui satisfait les conditions requires est initialisé statiquement (donc 100% thread-safe, aucun risque de data races, d'où le data-safety). Par exemple, la norme impose que le constructeur par défaut de std::mutex soit déclaré constexpr (pour rester avec les mutex, ça revient plus ou moins à ce que fait la macro PTHREAD_MUTEX_INITIALIZER dans la bibliothèque Posix Threads).