如何检查是否存在单独的C ++ 0x / C ++ 11语言功能?我知道Clang有一个很好的系统。那么GCC,Visual Studio还是Boost呢?我想一种方法是检测编译器版本并将其与该版本中引入的功能相关联。但这很麻烦。有人已经这样做了吗?
答案 0 :(得分:3)
boost config附带一个脚本来检查一些但不是所有C ++ 11的功能。
它为每个功能生成一个包含宏的配置文件。
答案 1 :(得分:3)
您的构建工具可能可以为此提供帮助。
CMake具有try_compile
命令,允许您测试代码示例是否将编译并根据编译结果设置变量。
目前我刚刚使用了更常用的功能,例如auto
输入。
您经常可以使用Boost来替换缺少的库功能,这可能是几年内编译器和库更新并修复错误的最佳选择。
GCC的C ++ 11功能兼容性列表位于:http://gcc.gnu.org/projects/cxx0x.html
请注意警告:
重要:GCC对C ++ 11的支持仍然是实验性的。一些功能是基于早期提议实现的,当更新它们以匹配最终的C ++ 11标准时,不会尝试保持向后兼容性。