致谢
我痛苦地意识到
- 这篇论文太长了。
- 对大多数技术主题的描述都省略了很多可以看作是根本的内容。很多情况下,许多人经年累月的工作会被简化为一页甚至一句话。特别是,我忽略了并发性这个极其重要的话题;它应该有一篇专门的长篇论文来进行详述。
感谢让 C++ 成功的数以百万计的程序员,他们创建的应用是我们这个世界的关键部件。
感谢本文草稿的审稿人,包括 Al Aho、A. Bratterud、Shigeru Chiba、J. Daniel Garcia、Brent Hailpern、Howard Hinnant、Roger Orr、Aaron Satlow、Yannis Smaragdakis、David Vandevoorde、J.C. Van Winkel 和 Michael Wong。本文的完整性和准确性在很大程度上依靠这些审稿人。当然,错误归我自己。
感谢 Guy Steele 帮我顺利解决了 LaTex 和 BibTex 中的谜团,把文章引用做到满足 ACM 要求的形式。
感谢所有在标准上努力工作的人。还有很多我没有提到的名字,可以在 WG21 论文的作者和这些论文的致谢部分中找到。我参考和引用的许多P
和N
编号的论文保存在 open-std.org/jtc1/sc22/wg21/docs/papers/。没有这些论文,本文的一些内容就会过度依赖我的记忆了。
译注:Heap Allocation eLision Optimization ↩︎ ↩︎ ↩︎
译注:下面的代码引自 2006 年的论文,但
operator=
的实现不符合现代惯用法:一般要么把参数设为clone_ptr p
,这就成了一个可以同时适配拷贝或移动的通用赋值函数;要么在函数体内进行一次移动构造,先clone_ptr temp(std::move(p));
再std::swap(ptr, temp.ptr);
。否则,当传递的实参是std::move
的结果(xvalue)而不是真正的临时对象(prvalue)时,代码的行为会不符合预期。当然,就如下面 Bjarne 讨论到的,在 2006 年应该还没有 xvalue 和 prvalue 的概念。 ↩︎
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论