8

如何检查单个 C++0x/C++11 语言功能是否存在?我知道 Clang 有一个很好的系统。GCC、Visual Studio 或 Boost 呢?我想一种方法是检测编译器版本并将其与该版本中引入的功能相关联。但这很麻烦。有人已经这样做了吗?

4

2 回答 2

4

boost config带有一个脚本来检查一些但不是所有的 C++11 特性。

它为每个功能生成一个带有宏的配置文件。

于 2012-04-19T10:20:03.690 回答
3

您的构建工具可能会对此有所帮助。

CMake 具有try_compile允许您测试代码示例是否会编译并根据编译结果设置变量的命令。

目前,我一直在使用更常用的支持功能,例如auto打字。

您可以经常使用 Boost 来替换缺少的库功能,这可能是几年内更新编译器和库并修复错误的最佳选择。

GCC 的 C++11 功能兼容性列表在这里: http: //gcc.gnu.org/projects/cxx0x.html

注意警告:

重要提示:GCC 对 C++11 的支持仍处于试验阶段。一些特性是基于早期提议实现的,当它们被更新以匹配最终的 C++11 标准时,不会尝试保持向后兼容性。

于 2012-04-19T10:23:32.003 回答