11 votes

Qu'est-ce qui est #défini si un compilateur est conforme à Cpp0x ?

Existe-t-il des #définitions officielles, ou inofficielles, pour savoir quand un compilateur est conforme à Cpp0x ? Mieux encore, pour des fonctionnalités Cpp0x spécifiques (~#cpp0xlambda, #cpp0xrvalue etc) ?

(Je n'ai rien trouvé à ce sujet sur le net)

14voto

Kirill V. Lyadvinsky Points 47627

Pour C++03 selon 16.8/1 (Noms de macro prédéfinis) :

Le nom __cplusplus est défini à la valeur 199711L lors de la compilation d'une unité de traduction C++.

Pour le projet C++0x n2857 selon 16.8/1 (Noms de macro prédéfinis) :

Le nom __cplusplus est défined à la valeur [tbd] lors de la compilation d'une unité de traduction C++.

9voto

Mark Rushakoff Points 97350

La FAQ C++0x de Bjarne dit :

__cplusplus

En C++0x, la macro __cplusplus sera défini comme une valeur différente (supérieure) de la valeur actuelle de l'indicateur de performance. 199711L .

2voto

user813147 Points 21

La spécification officielle inclut une valeur pour l'indicateur __cplusplus mais, comme d'autres l'ont fait remarquer, cela laisse penser que tout dans la spécification est mise en œuvre. Plus précisément, aucun compilateur actuel (à ma connaissance) ne définit la valeur appropriée. Les spécifications sont bien, mais les parties complètement non implémentées d'une spécification doivent être considérées comme provisoires ; l'intersection de la spécification et d'un large support est le véritable "standard".

Une question connexe est la suivante : "Comment puis-je savoir si au moins une partie du support C++0x est activée ? -std=c++0x commutateur de compilateur. La réponse à cette question est spécifique au compilateur et est sujette à changement, mais GCC 4.6 et Clang 2.1 définissent tous deux la macro de préprocesseur __GXX_EXPERIMENTAL_CXX0X__ (et lui donner de la valeur 1 ) lorsque leur support partiel de C++0x est activé.

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