c++11 c++0x 区别

无意间在编译c++代码时遇到

1
2
3
4
5
6
uname -r
2.6.32-754.17.1.el6.x86_64
g++ --version
g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)

main.cpp:27: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
1
2
3
4
5
6
uname -r
3.10.0-1062.9.1.el7.x86_64
g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)

cpp/main.cpp:27:5: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]

其实就是一个列表初始化结构的问题,参见

但是一个报C++0X,一个报C++11,这啥区别

看到一个有意思的解释

1
上一个版本的C++国际标准是2003年发布的,所以叫C++ 03。然后C++国际标准委员会在研究C++ 03的下一个版本的时候,一开始计划是07年发布,所以最初这个标准叫C++ 07。但是到06年的时候,官方觉得07年肯定完不成C++ 07,而且官方觉得08年可能也完不成。最后干脆叫C++ 0x。x的意思是不知道到底能在07还是08还是09年完成。结果2010年的时候也没完成,最后在2011年终于完成了C++标准。所以最终定名为C++11。

C++0X只是一个中间产物