<分区>
Possible Duplicate:
How do I check for C++11 support?
我正在编写一个小型库,我想在编译器支持时使用类枚举。我还想使用其他 C++11 功能,例如 final
和 override
关键字。
到目前为止,我已经使用一些技巧来确保它在所有版本的 GCC 上编译,但是当我启动我的 Windows 分区时,Visual Studio 2010 也开始报错。这是我使用的技巧的示例:
#if __GNUC__ == 4 && (__GNUC_MINOR__ > 7 || \
(__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ > 1))
# define TATO_OVERRIDE override
# define TATO_NO_THROW nothrow
#else
# define TATO_OVERRIDE
# define TATO_NO_THROW throw()
#endif
我知道最新版本的 Visual Studio 也已经支持了一批新功能。我想要的是类似于一组宏的东西,它告诉我我正在使用的编译器上有哪些功能可用。
#ifdef THIS_COMPILER_SUPPORTS_CLASS_ENUMS
...
#endif
这存在吗?有这样做的图书馆吗?
The compiler’s documentation?
让我澄清一下。我知道如何找到这些信息,我的问题在别处。我不想通过所有可能的编译器文档来收集这些信息,尤其是因为同一个编译器可能支持不同版本的不同功能。这是我到目前为止一直在做的事情,而我正在寻找的实际上是一种不这样做的方法。