首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

总结一下:VS2019中对C+20语言特性的支持

有什么新东西?

我们的开发团队一直都在努力工作,尝试在MSVC工具集中实现C++20尽可能多的语言特性,在已发布的VS2019 v16.7和VS2019 v16.8中,我们取得了比较大的进展。今天,我们就来总结一下这两个大版本中对C++20的支持情况。

今天我们将特别关注MSVC编译器(cl.exe)中实现的C++20语言特性。有关STL相关的进展消息,我们会在Microsoft STL GitHub中进行发布。

下面列出的一些特性中,有一些已经早在今年9月的举行的CppCon 2020会议中就给大家介绍过,如果你还有印象的话。

需要注意的是,如果需要使用C++ 17和C++ 20的功能,记得要使用/std:c++17和/std:c++ latest编译选项。

那咱们就开始吧,请坐稳扶好

VS 2019 v16.7中实现的C++20语言特性

VS 2019 v16.8中实现的C++20语言特性

请注意,C++20的两个大功能,即模块和协程,现已在MSVC工具集中完整实现,并由/std:c++ latest编译选项所包含。

严格模式(/permissive-)和/std:c++latest

作为模块支持的先决条件,现在在指定/std:c++latest时启用(/permissive-)。有关在(/ permissive-)模式下的代码的编译,请参考/permissive-的相关帮助文档。

对于以前在/std:c++latest下编译且需要不符合规范的编译器行为的代码,可以指定(/permissive)编译选项以关闭编译器中的严格一致性模式,并且必须放在/std:c++latest编译选项的后面。

但是,如果代码中使用到了模块,则指定(/permissive)将会导致如下的错误:

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

这里所说的选项如下所示:

总结

C++20对我来说,会是一门全新的语言,应该还是比较有意思的。

如果大部分的老哥都开始用了,我觉得我就可以开始入场了。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。

本文来自:《C++20 Features in Visual Studio 2019 versions 16.7 and 16.8》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201120A0FLCF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券