我知道默认情况下不应该启用编程语言的实验性特性,所以我欢迎-std=c++0x
和-std=c++1y
标志。然而,C++11已经成为几年来的标准。为什么编译器仍然需要-std=c++11
来支持其特性?
发布于 2013-12-04 11:17:54
C++11已经成为标准的几年了,但是编译器不会将其默认模式切换到C++11,直到:
基本上,很多人(和makefile)都依赖于编译器是符合标准的C++03编译器,或者至少依赖于它的不一致性是已知的。由于C++11引入了与C++03不一致的新实例,这种更改可能会带来创伤。
可以说,任何依赖C++03的人都应该指定一个这样的选项,而对默认模式的更改对他们没有任何影响。但是,一旦您记录了编译器的默认设置,人们就会相信这一点,不管是有意的还是其他的。
尤其对于gcc来说,4.8.2手册页面上说,“对C++11的支持仍然是实验性的”。因此,我认为您的问题的最终答案可能是,正确地实现C++11需要两年多的时间,甚至从所有用草案标准完成的工作开始。
发布于 2017-06-19 14:12:59
一个小小的更新。GCC 6.1及以上版本默认使用C++14模式[来源]。
https://stackoverflow.com/questions/20373626
复制相似问题