La spécification officielle comprend une valeur pour la __cplusplus
macro préprocesseur, mais comme d'autres l'ont souligné, cela suggère que tout dans la spécification est mise en œuvre. Plus précisément, aucun compilateur actuel (que je connais) ne définit la valeur appropriée. Les spécifications sont bonnes et bonnes, mais les parties complètement non implémentées de n'importe quelle spécification devraient être considérées comme provisoires; l'intersection de la spécification et du support large est la vraie "norme".
Une question connexe est "comment puis-je savoir si au moins un support C++ 0x est activé?", Par ex. avec le commutateur du compilateur -std=c++0x
. La réponse à cette question est spécifique au compilateur et peut être modifiée, mais GCC 4.6 et Clang 2.1 définissent la macro __GXX_EXPERIMENTAL_CXX0X__
du préprocesseur (et lui attribuent la valeur 1
) lorsque leur support C++ 0x partiel est activé.
Mais la macro '__cplusplus' ne doit pas être définie sur' 199711L' pour tout compilateur qui n'implémente pas la norme * full * C++ 98. – dalle