首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么C++11编译器支持仍然需要一个标志?

为什么C++11编译器支持仍然需要一个标志?
EN

Stack Overflow用户
提问于 2013-12-04 11:04:13
回答 2查看 4.1K关注 0票数 21

我知道默认情况下不应该启用编程语言的实验性特性,所以我欢迎-std=c++0x-std=c++1y标志。然而,C++11已经成为几年来的标准。为什么编译器仍然需要-std=c++11来支持其特性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-04 11:17:54

C++11已经成为标准的几年了,但是编译器不会将其默认模式切换到C++11,直到:

  • 在这个编译器和它使用的库中,C++11支持是完全完整的。而且也是稳定的,如果编译器编写者对可靠性有任何关注的话。
  • 最好是在编译器中增加一个主要版本号,因为C++11不完全向后兼容C++03.
  • 理想的情况下,在一个众所周知的时间表,以便用户可以准备的变化.

基本上,很多人(和makefile)都依赖于编译器是符合标准的C++03编译器,或者至少依赖于它的不一致性是已知的。由于C++11引入了与C++03不一致的新实例,这种更改可能会带来创伤。

可以说,任何依赖C++03的人都应该指定一个这样的选项,而对默认模式的更改对他们没有任何影响。但是,一旦您记录了编译器的默认设置,人们就会相信这一点,不管是有意的还是其他的。

尤其对于gcc来说,4.8.2手册页面上说,“对C++11的支持仍然是实验性的”。因此,我认为您的问题的最终答案可能是,正确地实现C++11需要两年多的时间,甚至从所有用草案标准完成的工作开始。

票数 29
EN

Stack Overflow用户

发布于 2017-06-19 14:12:59

一个小小的更新。GCC 6.1及以上版本默认使用C++14模式[来源]

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20373626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档