VS“15”预览4中的C++ 14/17特性和STL修复

Visual Studio“15”预览版4是 现在可用 ,带有 新安装程序 .  (VS“15”是IDE版本号,不是一年。  这是继VS 2015之后的下一个主要版本,即IDE版本14。  VS在其年度品牌、IDE版本和C++编译器版本上有不同的数字。

null

所有的 功能和修复 在VS 2015中,更新3(包括std::abs()、std::min()、std::max()和std::pow()的优化器改进,我们忘记提到这些)也在VS“15”预览版4中提供。  另外,我们还有新的消息要宣布。  以前,新的主要IDE版本包含新的主要编译器版本和二进制不兼容的stl(这允许我们彻底检查数据结构表示的正确性和性能)。  既然我们已经以高度兼容的方式向编译器和STL添加了VS 2015 RTM的特性,那么我们将在新的主要IDE版本中继续这样做。  具体来说,VS 2015和VS“15”将具有相同的主编译器版本(19),并且它们的STL将是二进制兼容的,并且这种兼容的编译器和STL将在VS“15”的整个生命周期中保持可用。  这意味着STL的DLL将继续命名为msvcp140.DLL。  (在将来的某个时候,我们希望有一个编译器版本20和一个二进制不兼容的STL。)

注意,我们保证的是二进制兼容性,而不是源代码兼容性。  而 版本切换 /std:c++14 (这是默认值)通常会保留源代码兼容性,对于错误修复或问题解决方案,总是可能需要更改源代码。  当我们试图避免不必要的破坏源代码的更改时,必要时会记录在MSDN上, 就像我们一直在做的那样 用于VS 2015更新。  请注意/std:c++latest 会经常遇到破坏源代码的更改,但我们也会尝试记录它们(特别是在STL中,当我们更新实现以符合最新的工作文件时,这有时会以我们没有立即意识到的意外方式破坏源代码,因此需要注意)。

很明显,这对我们的程序员用户来说是件好事。  虽然主要的编译器版本保持不变在19,我们仍然添加了新的编译器和STL特性。  (_MSCu FULLu VER将增加,允许检测更新的编译器。)  STL二进制兼容性意味着第三方库可以一次构建并与VS 2015和VS“15”一起使用。  (但是,最好还是使用最新的可用版本来编译所有内容,因为这将使您获得最大的正确性和性能。)  现在,我们要补充的是:

编译器功能

C++ 14的特点 骨料NSDMIs 由维尼·罗马诺无条件执行。

C++ 17的特点 [[fallthrough]]属性 已根据/std:c++latest 张硕著。

STL特征

C++ 17的特点 <算法>样本() 已根据/std:c++latest.

C++ 17的特点 你可以打电话吗 已根据/std:c++latest.  (isnothrowu callable被Preview 4中的编译器错误阻止,该错误已在下一个版本中修复。)

LWG问题

下列C++ 14库问题解决方案无条件地实现:

  • LWG 2135条件变量::wait()中引发的异常要求不明确
  • LWG 2203作用域分配程序适配器使用错误的参数类型进行分段构造
  • LWG 2210缺少分配器感知容器的分配器扩展构造函数

下列C++ 17库问题解决方案无条件地实现:

  • LWG 2063串移动分配的矛盾要求
  • lwg2219调用一个指向成员的指针,其中引用包装器作为对象表达式
  • LWG 2439 unique_copy()有时无法返回到读取其输出
  • LWG 2476作用域u分配器u适配器不可分配
  • lwg2566集装箱转接头第一模板参数要求
  • LWG 2576 istream_迭代器和ostream_迭代器应使用std::addressof
  • lwg2577{共享的,唯一的}锁应该使用std::addressof
  • LWG 2579 basicu string assignment与basicu string::assign中的分配器不一致
  • LWG 2583无法为基本字符串(str,pos)提供分配器
  • LWG 2586作用域分配程序u adapter::construct()中使用了错误的值类别
  • LWG 2684优先级队列缺少比较器typedef
  • LWG 2716洗牌和样本规范不允许左值URNGs

STL修复

清理了u迭代器u调试u级别=2个断言。  现在它们总是只发出一个断言对话框,不能忽略它们。  (以前,有些断言(但不是所有断言)发出两个对话框,有些断言(但不是所有断言)可以忽略。)

进一步改进了对花哨指针的支持。  现在,在STL的大部分课程中,模仿指针、戴高顶帽子和戴单片眼镜的学生都被接受了。  (精巧的指针,由 标准::指针特性 ,非常先进,非常罕见。)

修复了在包含具有非平凡析构函数(VSO#233820)的元素的列表/转发列表上调用未初始化的_copy()时触发编译器错误的回归/ 接#2846868 ).

修复了所有已知的作用域分配程序错误:VSO#129349“<作用域分配程序>:作用域分配程序正在尝试默认构造分配程序”,VSO#146338“<作用域分配程序>:错误C2512:没有合适的默认构造函数可用”,VSO#224478“<作用域分配程序>:构造正在使用真正的新位置,不是最外层的“ALLOCu TRAITS::construct”。

修复了中的setlocale()内存损坏问题。

修复了(VSO#225160)中match_prev_avail、match_not_bol和match_not_eol的中断处理/ 接#2745913 ,VSO#226914)。

在std::async()线程关闭之前阻止CRT关闭(VSO#225699)。

比利·罗伯特·奥尼尔三世- @马尔瓦米尼贡 bion@microsoft.com

凯西·卡特- @密码键 cacarter@microsoft.com

斯蒂芬T。拉瓦维- @斯蒂芬特拉瓦维 stl@microsoft.com

史蒂夫·维什努斯基- stwish@microsoft.com

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享