LLVM 项目博客

LLVM 项目新闻和来自前线的细节

libc++ 和 C++1Y

我很自豪地宣布,截至 9 月 21 日,libc++ 已完整实现 C++1Y 标准库。

2013 年 4 月,C++ 标准委员会批准了 C++ 语言下一个版本的草案,名为“C++1Y”。(C++11 在开发期间被称为“C++0x”)。我们希望这个草案标准明年能获批,并成为 C++14。

草案标准包括对语言和标准库的更改。这些更改旨在纠正 C++11 标准中发现的一些错误,并添加新功能。

clang 和 libc++ 都在增强以支持这个新标准,它们各自都有一个网页来展示当前的进展情况:clang C++1Y 状态libc++ C++1Y 状态.

C++ 标准委员会本周(9 月 23 日至 28 日)正在开会,讨论 C++1Y 草案标准中的评论和缺陷报告,肯定会有所更改。

我们本可以等到 C++1Y 标准的最终版本获批;这当然会少做很多工作。草案标准将在 9 月(可能在 2 月)进行修订,因此 libc++ 实现将不得不进行更改以跟踪标准。

但是,实现草案标准有几个优势。
  • 我们在使用新标准方面积累了经验。
  • 我们发现草案标准中的更改在几个地方“暴露”了其他可以改进的地方。例如,在实现新的 optional 功能时,很明显比较函数 plusless(以及其他函数)的接口可以增强。其结果是新的论文 n3749.
  • 通过实现标准,我们可以识别草案标准中的问题/不一致。例如,当我们实现新的库功能 dynarray 时,我们发现容器的基于分配器的构造函数的接口是错误的;特别是,在某些情况下,编译器无法确定要调用的正确构造函数。这被提到了 LWG 问题 2255,在标准最终确定之前必须解决。