VisualStudio 2019版本16.7和16.8中的C++ 20特性

这是什么 新建

我们有 继续在MSVC工具集中实现C++ 20, 值得注意的进展 制造于 VS(Visual Studio) 2019 v16.7和2019 v16.8。这篇博文列出了实现的特性 自从 这个 VS 2019到16.1到16.6中的C++ 20特征和修复 博客文章。

null

这篇博文将特别关注 MSVC公司 编译程序 (cl.exe) . STL的一致性进度的变更日志在 标准库更改日志 微软STL GitHub 回购 .

所涵盖的一些功能 已经在 发布的公告 t型 CppCon公司 2020 与VS2019 v16.8 Preview 3版本相关 .

作为提醒 / std:c ++17和/ std:c ++最新 编译器选项是使用C++ 17和C++ 20特性所必需的 ,分别 .

VS 2019 v16.7版本

C++ 20语言特征支持

  • 实施 P2107R0型 美国052 中未执行的返回语句 协同程序
  • 实施 P2103R0型 允许“导入”内部链接规范[ dcl.link链接 ]
  • 实施 P2085R0型 一致的 违约 比较
  • 实现了CWG 2280,它匹配了一个普通的释放函数和布局 新的
  • 实现了cwg2382非分配布局的阵列分配开销 新的
  • 实施 CWG公司 2441内联函数 参数
  • 实施CWG 2282 与不匹配的对齐/非过度对齐分配/取消分配函数的一致性
  • 应该考虑实现从T*到bool的转换 缩小

与2019年相比 16.8

C++ 20语言特征支持

  • 实施 P1975R0页 修复带圆括号的聚合初始化的措辞
  • 实施 P1874R1页 模中非局部变量的动态初始化次序

C++ 20的两个主要特点, 模块 协同程序 ,现在是MSVC工具集中的完整特性,现在由/ std:c ++最新的编译器开关。

严格一致性模式(/permissive-)和/ std:c ++最新

作为模块支持的先决条件,当/ std:c ++指定了最新版本 . 看到了吗 /放任的- 文档 关于 在“/permissive-”下编译代码。

对于以前在下编译的代码/ std:c ++最新并且需要非一致性编译器行为,可以指定“/permissive”来关闭编译器中的严格一致性模式,并且必须在/ std:c ++命令行参数列表中最新的。

但是,如果模块用法无效,则指定“/permissive”将导致错误 遇到 :

错误C1214:模块与通过“[option]”请求的非标准行为冲突

其中[ 选项 ]它们是:

  • `/ Zc:两相 ` : 两阶段名称查找(`/ Zc:两相 `)是 必修的 对于C++ 20个模块,由“/允许”暗示 . 另请参见[/ Zc:两相 [文件]( https://docs.microsoft.com/en-us/cpp/build/reference/zc-twophase?view=vs-2019).
  • `/ Zc:隐藏的朋友 ` : S 标准隐藏好友名称查找规则 必修的 对于C++ 20模块,由“/允许”-‘暗示。
  • `/ 预处理器 ` : 共形预处理器的使用(/ 预处理器 )是 必修的 对于C++ 20头单元的使用和创建 . 命名模块不需要这样做 选项 . 另请参见/ 预处理器 [文件]( https://docs.microsoft.com/en-us/cpp/build/reference/zc-preprocessor?view=vs-2019 )

更多信息

对于VisualStudio更改(超出C++工具集)和下载链接,请参见 VS发行说明 VS预览发行说明 . 你可以通过 开发者社区 ,还可以通过 microsoft/STL GitHub问题 .

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