实现者应以什么顺序提供C++11特性?

标准中并没有关于引入C++0x特性的顺序;它只是简单的列出了为了达到完整地C++11特性所需要做的事情。然而,如果实现者分阶段引入新的C++0x特性,我们也认为这是合理的。毕竟,我不会使用不支持的特性。所以,一个基于“易于提供”和“对多数人有用”的理念,是早期实现的关键原则。

  • 没有功能特性的新库取决于新的语言特性,比如可变参数模板和常量表达式constexpr。
  • 简单且易于实现的特性将在细小但重要的地方帮助用户:
  • auto
  • enum class枚举类
  • long long
  • nullptr空指针
  • right brackets右括号
  • static_assert静态断言

帮助实现C++11 标准库的语言特点:

  • 常量表达式
  • 初始化列表
  • 一般的和统一的初始化 (包括 预防宽转窄)
  • 右值引用
  • 可变参数模板
  • 标准库用到的所有特点

相关的并发特性:

  • memory model 内存模型
  • 线程的本地化存储thread_local
  • atomic types 原子类型
  • local types as template arguments 作为模板参数的局部类型
  • lambdas
  • 标准库的完整支持
  • PODs

如果你看得仔细,你会发现我对很多语言特点(在引入这些特性的时间上)并没有看法。很自然地,我也希望这些特性能够被尽快地实现。但是,我并没有一个关于何时这些特性应该被实现的判断。显然,每一个C++实现者都有自己的原则,所以我们不能期望他们步调一致,但是我希望他们可以稍微关注一下别人在做什么,这样可以让用户更早地开始他们的移植工作。

(翻译:nivo)