C ++ 0x和C ++ 11有什么区别?


80

我在SO上看到这两个术语的混合用法。

维基百科说

C ++ 11,以前也称为C ++ 0x ...

但我不确定为什么。

  • 为什么先叫C ++ 0x,然后叫C ++ 11?
  • 另外,x代表什么?我的猜测-像变量一样?

2
零表示规范的编写者过于乐观(程序员不是总是这样吗?)
Sergey Kalinichenko 2012年

2
C ++ 0x是一个非常乐观的名称。称它为DukeNukem,erm,C ++ 4ever会更现实。
fredoverflow

6
我不了解零与乐观之间的联系是什么。
勒内Nyffenegger

5
@RenéNyffenegger零表示乐观,因为人们认为该标准将在2000年代的十年内完成,因此被称为C ++ 08或C ++ 09。实际上,直到2011
。–布伦南·文森特

2
好吧,我现在明白了。我一直认为0x旨在引入十六进制文字。
勒内Nyffenegger

Answers:


95

C ++和C标准通常以发布的年份命名,这样更容易记住。

例如,在C ++中,最初的Standard于1998年发布,因此我们谈论C ++ 98,而当我们提及在2003年发布的第一个更正时,我们谈论的是C ++ 03。

据称,下一个标准将在2008年完成,但由于不确定,因此将其称为C ++ 0x,x代表8或9。实际上,众所周知,规划已转移因此,我们最终使用了C ++ 11。

尽管如此,对于下一个版本(C ++ 1x),Bjarne Stroustrup表示他打算在5年内(大约在2016年)做到这一点。目前,对核心语言(概念,模块和垃圾回收)进行了一些更改,并且重点似乎更多地放在扩展库(例如文件系统)上,但是还很早,所以谁知道!


2
有很多事情要推进到下一个标准:概念,垃圾收集,模块...(垃圾收集可能是最接近准备就绪的模块。模块仍然需要大量工作。)
James Kanze 2012年

@JamesKanze:我没有听说过垃圾回收,也忘记了模块(谢谢)。模块本身实际上很简单(许多语言已经拥有它们了),我记得道格·格雷戈尔(Doug Gregor)曾说过,真正的问题实际上是将模块和实际的标头系统桥接成一个连贯的整体,因此您无需等待依赖关系就可以了。先迁移。Doug一直致力于在Clang中集成模块,但是似乎为CLang 3.1改进了lambda。
Matthieu M.

14
未来的消息,我们有C ++ 14和C ++ 17
Karolis Ryselis

29

在标准发布或定稿之前,C ++ 0x是该标准的名称。一旦完成(2011年),我们就可以正确命名。也就是说,C ++ 11。


3
根据Bjarne的“ x是十六进制”的说法,它也可能是C ++ 0B。:P
乔恩·普迪

@JonPurdy最初的目标是在2009年之前制定最终标准。Bjarne对x是十六进制发表了评论,显然我们不打算这样做。(他可能是讽刺的意思。我不知道。)
James Kanze 2012年

5
@JamesKanze:是的。开个玩笑。标准委员会必须做些事情来减轻情绪。
乔恩·普迪


4

当在1998年左右开始研究新标准时,没有人知道它将在哪一年定稿-因此“ x”代表未知的年份,并希望它将在十年左右的时间内定稿。

最后,该标准于2011年完成,因此该标准现在俗称C ++ 11,正式称为ISO / IEC 14882:2011。

既然该标准是正式的,下一步工作将继续进行;再一次,没有人知道什么时候可以完成,但是希望用不到十年的时间,因此俗称C ++ 1x。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.