可能重复:
如何检查 C++11 支持?
我正在编写一个小型库,并且只要编译器支持它们,我就想使用类枚举。我还想使用其他 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
这存在吗?有没有这样做的图书馆?
编译器的文档?
让我澄清一下。我知道如何找到这些信息,我的问题在别处。我不想通过所有可能的编译器文档来收集这些信息,特别是因为同一个编译器可能支持与其版本相关的不同功能。这就是我迄今为止一直在做的事情,而我正在寻找的实际上是一种不这样做的方法。