VisualStudio 15.5预览4中包含的MSVC工具集包括许多C++一致性改进。在整个VS2015和VS2017版本中 我们关注的是与C++标准的一致性,包括C++ 17的特性。 . VS2017版本15.5, MSVC已经实现了C++核心语言和库功能的75%左右。 . 这些功能可以通过 使用/std:c++17 版本切换 .
- 编译器中值得注意的完整功能包括:
- VS调试器中支持的结构化绑定
-
constexpr
兰巴斯 -
if constexpr
- 内联变量
- 折叠表达式
- 添加
noexcept
到类型系统 - 我们对标准库实施的显著变化包括:
-
not_fn()
- 重写
enable_shared_from_this
- 拼接地图和集合
- 正在删除中的分配器支持
std::function
-
shared_ptr<T[]>
,shared_ptr<T[N]>
- STL的内联变量
- 删除动态异常规范
- 贬抑
shared_ptr::unique()
- 贬抑
<codecvt>
- 废弃库零件
请注意,其中一些功能包含在15.3周期中,并在15.5周期中完成。
我们在修复旧的一致性问题方面也取得了重大进展,包括表达式SFINAE修复, constexpr
完整性,以及 大多数两阶段名称查找案例 .
最后,就目前的技术规范,我们已经根据C++标准委员会的要求进行了语法改变。VS2017版本15.5中的MSVC编译器实现了对夏季会议上请求的模块接口的语法更改。
你现在加上 export
在模块接口的声明中。例如,你写这个
export module FileIO; export File OpenFile(const Path&);
声明的模块接口 FileIO
你以前写过的地方
module FileIO; export File OpenFile(const Path&);
更完整的信息 MSVC的C++一致性改进可以在McSoSt.com文档中找到。 在即将到来的 斯蒂芬T的博客文章。拉瓦维 .
新项目的一致性模式默认打开。
我们已经启用了 /permissive-
默认情况下,符合VisualC++中新建项目的一致性模式,使您能够编写更接近C++标准一致性的代码。 这种模式禁用了多年来在MSVC已经存在的不符合C++的构造。您可以进一步了解我们的一致性模式和 /permissive-
控制它的开关 在这篇博文中 或 在docs.microsoft.com上 .
若要启用旧项目中的一致性模式(或在新项目中禁用),只需更改ProjtProjks> C/C++ >语言>一致性模式设置:
如果您在未安装VisualStudio的计算机上构建,并且需要编辑 .vcxproj
直接地,你会发现设置是由ConformanceMode标签控制的。请记住,对于项目中的每个平台配置,此标记只存在一次。下面是一个例子 .vcxproj
文件:
[xml文件]
从WindowsFallCreatorsSDK(10.0.16299.0)开始,一致性模式几乎与最新Windows工具包中的所有头文件兼容。单个一致性特征可以由更细粒度的 /Zc一致性开关 .
MSVC工具集版本号增加到14.12
由于VS2017版本15.5附带的MSVC工具集中包含了大量的一致性改进和错误修复,我们将版本号从14.11增加到14.12。这个小版本表明 VS2017 MSVC工具集与VS2015 MSVC工具集二进制兼容 ,使VS2015用户更容易升级。
VS2017版本15.5包括对VS2017中MSVC工具集的第三次重要更新。VS2017 RTW发布的第一个更新。第二次更新是更新版本15.3。以下是MSVC工具集版本和编译器版本,以供参考( _理学硕士 )在VS2015到VS2017的每个版本中(请注意,由于历史原因,MSVC编译器版本比VisualStudio中显示的MSVC工具集版本高5。)
Visual Studio版本 | MSVC工具集版本 | MSVC编译器版本( _MSC_VER ) |
---|---|---|
VS2015和更新1、2和3 | VS中的v140;版本14.00 | 1900 |
VS2017,版本15.1和15.2 | v141在VS;版本14.10 | 1910 |
VS2017,版本15.3和15.4 | v141在VS;版本14.11 | 1911 |
VS2017,版本15.5 | v141在VS;版本14.12 | 1912 |
最后
在visualstudio版本15.5预览版4中试用MSVC编译器,让我们知道您的想法!一如既往,我们可以通过以下评论和电子邮件联系到您( visualcpp@microsoft.com )你可以通过 帮助>报告产品中的问题 ,或通过 开发者社区 . 你也可以在Twitter上找到我们( @视觉 )还有Facebook( msftvisualcpp软件 ).