【发布时间】:2013-12-04 11:04:13
【问题描述】:
我了解默认情况下不应启用编程语言的实验性功能,因此我欢迎标记 -std=c++0x 和 -std=c++1y。然而,几年前 C++11 已经成为标准。为什么编译器仍然需要-std=c++11 来启用对其功能的支持?
【问题讨论】:
-
相关? nuwen.net/mingw.html ("我已将 GCC 的默认模式更改为 C++11。")
-
这个问题似乎是题外话,因为它是关于营销和产品包装,而不是计算机编程。
-
@EJP:这是关于如何对高度使用的软件组件进行向后不兼容的更改。就个人而言,我不会让营销部门自己做,而是 YMMV ;-p
-
@DarioP 我不同意您的评论,但请注意:默认情况下,
g++不完全使用c++98模式(或c++03,两者实际上都表示 C++2003 ) 而是gnu++98(source),它增加了一些非标准的扩展;这就是为什么我总是明确指定要使用的标准,使用-std=c++98/-std=c++03或-std=c++11(并使用-pedantic-errors强制执行)。所以无论 C++98/03 还是 C++11,我总是需要使用一个标志(至少对于可移植代码):) (这是 GCC 和 Clang;MSVC 不允许你选择。)
标签: c++ c++11 compiler-construction