编译器中的标准版本开关

可共享链接: https://aka.ms/versionswitches docs.microsoft.com上的官方文档 .

null

这篇博文由加布里埃尔·多斯雷斯、乌尔齐伊·卢夫桑巴特和安德鲁·帕多撰写。

Visual C++ 2015更新3 我们正在引入工具来帮助您控制您所依赖的ISO C++编程语言的版本以及您希望VC++在项目中执行的版本。我们正在创建一系列新的开关,它们对应于C++语言的版本,从 /std:c++14 /std:c++latest .

为什么要添加这些开关?

传统上C++ C++ C++ 98、C++ 03、C++ 11、C++ 14等多种版本的组合,除了一致性改进错误修复之外,我们还可以在默认模式下释放编译器。这可能会导致这样的情况:很难同时升级到更新更好的编译器,同时将代码向前移动。我们非常感谢您对我们的一致性改进和新特性工作给予的良好反馈。随着C++标准委员会正在为一个新的C++版本做准备,我们已经主动帮助您在构建系统或编译器命令行中声明,在更新下一个Visual C++版本时,C++的版本是您所能放心的。

Visual C++ 在VisualStudio 2015的第一版本和VS 2015更新3的C++标准一致性方面取得了重大进展。 constexpr ,改进的表达式SFINAE支持,初始值设定项列表的求值,变量模板 ,等等。我们的 标准库的实现与C++ 14标准草案中采用的特征保持一致。 . 我们已经实现了委员会目前正在考虑的一些主要功能,包括 C++模块 协同程序 . 我们希望您能从中受益,但我们也希望您能以自己的速度使用这些功能,同时升级到这个新的更新。

默认情况下,所有在该更新中实现的C++后14个特性都被关闭;那些包含在早期版本中的内容将保留下来,以避免引起构建。

语言版本的开关

我们希望帮助您保持编译器工具链与最新版本的visualstudio同步。为了帮助您保持当前状态,而不需要您立即将代码移到最新的C++标准,我们引入了一系列允许您选择C++版本的开关。随着我们开始与VS 2015更新3,在这个系列的第一个开关将是 /std:c++14 ,反映了Visual C++编译器的状态。我们还介绍了 /std:c++latest 反映当前标准草案中提出的编译器和库工作的开关。请注意,其他编译器中也有类似的开关,包括 合同通用条款 叮当声 .

交换机启用了来自每个C++标准的新特性,或者对现有特性的任何行为破坏性更改。它们不是用来跟踪MSVC特定的一致性错误的。错误修复将继续独立于语言版本切换进行。如果 错误修复会提示源代码更改更符合标准,编译器将提供定义良好的诊断消息。对于需要修改源代码的bug修复,我们将继续保持极高的标准,并且我们将继续记录每个修复及其影响(本页列出 现有的 编译器一致性改进 VS 2015文档)

/std:c++14

这个 /std:c++14 Switt启用了Visual C++编译器实现的C++ 14特性集、模一致性错误修复和正在进行的特征工作(例如 常量表达式 ,表达式SFINAE,2阶段名称查找等)使用/std:c++14 交换机将始终指导VisualC++根据C++ 14标准和相关缺陷报告编译代码。  这是此更新中的默认语言版本。

每个C++版本的版本通常是基于以前的版本,除非它们没有。因此,每个语言版本(对于C++ 14之后的版本),因为我们从 /std:c++14 )除了语言版本所指示的任何其他要求(包括特征修改或删除)之外,还将选择C++ 14语义。使用系列中较新的开关,如 /std:c++latest (请参见上一节) /std:c++latest 下面将打开C++ 14的特性,除了C++ 14的特性之外。请注意,没有计划添加 C++ 11交换机。

在Visual C++编译器的以前版本中已经实现了一些C++ 14的特性。为了避免破坏那些已经依赖这些特性的用户的更改,我们将把它们放在 /std:c++14 开关。它们包括以下功能,所有这些功能都已在Visual Studio 2015 Update 2中提供:

请注意,一些库的特征来自C++ 17,如 std::is_convertible_v 在创建标准版本切换之前也已经实现了,因此出现在 /std:c++14 .

/std:c++latest

这个 /std:c++latest 交换机将通过Visual C++实现的一组功能,C++版本标准的工作草案的每一个新版本。目前,它将跟踪我们添加的建议后C++ 14草案标准的功能。当下一个标准被批准时,语义选择了 /std:c++latest 将由 /std:c++17 (假定下一个标准是C++ 17,但标准委员会工作组) 从不停止惊讶)和 /std:c++latest 将继续跟踪下一个标准草案的特征。换言之/std:c++latest,您将始终获得当前实现的所有新功能集,并且默认情况下处于启用状态(这个 /std:c++latest 开关不会打开由保护的新功能 /experimental 开关。)

摘要

Visual Studio 2015 Update 3引入了两个新开关( /std:c++14 /std:c++latest )以控制您希望在项目中使用的C++编程语言的版本。在这个更新中,如果你指定了一个语言版本,这些版本中没有任何一个,编译器会忽略开关(带有警告),默认为C++ 14。你可以在今天试用编译器。查看这个博客帖子,了解如何获得VS 2015更新3 RC: https://devblogs.microsoft.com/visualstudio/2016/06/07/visual-studio-2015-update-3-rc/

最后

一如往常,我们热切希望您尝试一下这些变化,并在下面的评论中通过电子邮件给我们反馈 visualcpp@microsoft.com ,或通过任何常规渠道: 用户语音 , 建议 , 连接 (对于虫子),甚至 送一个微笑 . 我们很高兴收到你的来信!

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0 分享