【发布时间】:2016-02-23 14:56:51
【问题描述】:
这在 GCC 4.6 下编译失败:
#if __cplusplus >= 201103L
#include <ratio>
#endif
__cplusplus 应根据此错误在 GCC 4.6 中设置为“1”: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773
我应该如何测试 GCC 4.6 中的 C++11 支持?
编辑:我想在使用 GCC 4.6 构建时使用 Boost ratio,在 GCC 4.8 和 -std=c++11 构建时使用 std ratio。剩下的代码已经准备好了,只是这个包含编译失败。
【问题讨论】:
-
最好测试已知可工作的编译器和版本。所以你可以使用
__GNUC__和__GNUC_MINOR__。 -
__GXX_EXPERIMENTAL_CXX0X__也许?但在这一点上,我只会认为 gcc-4.6(及更早版本)不支持 C++11,更简单,并且不排除那么多用户。