2011-08-21 8 views

Respuesta

10

Utiliza diferentes pruebas preprocesador para cada función por separado, como

#if __has_feature(cxx_decltype) 

para la prueba si se implementa decltype.

Ver la lista completa aquí

http://clang.llvm.org/docs/LanguageExtensions.html#checking_upcoming_features

+0

Gracias por señalar esto. Parece usable – wilx

+3

Debo admitir que realmente me gusta este sistema, me gustaría que otros compiladores * se subieran al carro * aquí. Es mucho más autoexplicativo que consultar con un número de versión. –

0

Clang define la misma macro, sobre todo para la compatibilidad con libstdC++ de GCC.

Me parece recordar que los desarrolladores gusto cheques en características específicas, como en libC++ better:

(Desplácese hacia abajo algunos)

2

La norma dice que se puede ver en el valor de _cplusplus para determinar qué norma el compilador está apuntando Aunque, en la práctica, es posible que no pueda hacer mucho con esta información. Vea la respuesta de Bo Persson para una solución mucho mejor.

C++ 98/03 - 199711L

C++ 11 - 201103L

+0

'__cplusplus = 199711L/201103L' es solo a partir de GCC 4.7.0 y superior, a menos que el parche se transfiera. 4.6 y versiones anteriores usan '__cplusplus = 1'. – moshbear

Cuestiones relacionadas