BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Visual Studio "14"聚焦下一代C++规范

| 作者 Jeff Martin 关注 16 他的粉丝 ,译者 臧秀涛 关注 4 他的粉丝 发布于 2014年7月10日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Visual Studio “14”的第一个预览版本包含了下一个C++ 11/14依从性层次将要包含的细节。微软的高级开发人员Stephen T. Lavavej就C++14在Visual Studio “14”中的支持层次撰文补充了一些额外的细节

这一工作是针对VS2013RTM所做的修改,覆盖了三大类:标准模板库(STL)补充、STL修正和STL的非兼容性修改。值得注意的是,Lavavej介绍说,“14”中C++ STL的相关工作主要是4位开发者完成的:Lavavej、P.J. Plauger、Artur Laksberg和James McNellis。

“14”中对STL的补充全部基于已批准的C++14规范以及Filesystem V3这一技术规范:

  1. N3642 <chrono>/<string> UDLs
  2. N3644 Null Forward Iterators
  3. N3654 quoted()
  4. N3657 Heterogeneous Associative Lookup
  5. N3658 integer_sequence
  6. N3668 exchange()
  7. N3670 get<T>()
  8. N3671 Dual-Range equal()/is_permutation()/mismatch()
  9. N3779 <complex> UDLs
  10. N3887 tuple_element_t
  11. N3940 Filesystem "V3" Technical Specification

解决了十多项C++14中列出的库问题,还包含了一些对现有STL的修正:<chrono>中的Clock支持有所改进,<atomic>改进了编译时间校正(不再包含内联X86汇编),还有一个从2006开始就一直存在于<locale>中的bug也被修正了。

生成的目标文件更为高效,而且通常要比VS2013生成的小得多。regex支持上也有很多改进, 修复了一些bug,并提供了一个更为稳定的实现。

使用gets()的开发者应该注意,该函数已经被从C++11和C++14中移除,所以在Visual Studio中,gets()将由CRT(C语言运行时)中的<stdio.h>提供,不会再存在于STL的<cstdio>中。

Lavavej提到,除了这些修改,有些地方的修改破坏了向后兼容性。受影响的地方包括Filesystem的V3接口带来的修改(与V2相比),以及_USE_32_BIT_TIME_T的使用会触发编译器警告。iostreams中还有一个与其浮点数解析方式有关的已知bug,开发仍在进行。

如果有意全面了解所有细节,一定要阅读一下Lavavej的文章

查看英文原文:Visual Studio "14" Sharpens Focus on Modern C++

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT