Visual Studio“15”预览版4是 现在可用 ,带有 新安装程序 . (VS“15”是IDE版本号,不是一年。 这是继VS 2015之后的下一个主要版本,即IDE版本14。 VS在其年度品牌、IDE版本和C++编译器版本上有不同的数字。
所有的 功能和修复 在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”。
修复了
修复了
在std::async()线程关闭之前阻止CRT关闭(VSO#225699)。
比利·罗伯特·奥尼尔三世- @马尔瓦米尼贡 – bion@microsoft.com
凯西·卡特- @密码键 – cacarter@microsoft.com
斯蒂芬T。拉瓦维- @斯蒂芬特拉瓦维 – stl@microsoft.com
史蒂夫·维什努斯基- stwish@microsoft.com