Oficjalna specyfikacja obejmuje wartość dla __cplusplus
preprocesora makro, ale jak inni zwrócili uwagę, sugeruje to, że wszystko w specyfikacji jest realizowany. Co więcej, żaden aktualny kompilator (który znam) nie ustawia odpowiedniej wartości. Specyfikacja jest dobra i dobra, ale całkowicie niezaimplementowane bity dowolnej specyfikacji powinny być uważane za próbne; przecięcie specyfikacji i szerokiego wsparcia jest prawdziwym "standardem".
Powiązanym pytaniem jest "jak sprawdzić, czy jest włączona obsługa C++ 0x?", Np. z przełącznikiem kompilatora -std=c++0x
. Odpowiedź na to pytanie jest specyficzna dla kompilatora i może ulec zmianie, ale zarówno GCC 4.6, jak i Clang 2.1 ustawiają makro preprocesora __GXX_EXPERIMENTAL_CXX0X__
(i nadają mu wartość 1
), gdy włączona jest obsługa częściowego C++ 0x.
Ale makro '__cplusplus' nie powinno być ustawione na' 199711L' dla dowolny kompilator, który nie implementuje standardu * full * C++ 98. – dalle