首页 > 解决方案 > C++ 标准版本与 Visual Studio 版本

问题描述

/std (Specify Language Standard Version) 选项在 Visual Studio 2017 及更高版本中可用。这是否意味着以前版本的 Visual Studio 使用特定版本的 C++ 标准,并且与 gcc/clang 不同,VS 版本与编译器提供的默认 C++ 标准版本之间存在 1:1 映射?

标签: c++visual-studio

解决方案


有一篇博文Standards versionswitches in the compiler解释了该特性的介绍以及MSVC之前的做法:

传统上,我们会以默认模式发布编译器,该模式结合了跨越多个 C++ 语言版本的功能,例如 C++98、C++03、C++11、C++14 等,此外还有一致性改进bug修复。这可能会导致难以同时升级到更新更好的编译器并同时将代码向前移动。我们非常感谢您就我们的一致性改进和新功能工作向我们提供的出色反馈。由于 C++ 标准委员会正在为新的 C++ 版本做准备,我们已主动帮助您在构建系统或编译器命令行中说明您在更新到下一版本的 Visual C++ 时对哪个 C++ 版本感到满意。

Visual C++ 在 Visual Studio 2015 的第一个版本和 VS 2015 Update 3 之间的 C++ 标准一致性方面取得了重大进展。我们已经修复了许多与 constexpr、改进的表达式 SFINAE 支持、初始化列表评估、变量模板等有关的问题。我们的标准库实现与后 C++14 标准草案中采用的特性保持同步。我们已经实现了委员会目前正在考虑的一些主要特性,包括 C++ 模块和协程。我们希望您从这一切中受益,但我们也希望您按照自己的节奏使用这些功能,同时升级到这个新的更新。

此更新中实现的所有后 C++14 功能默认关闭;保留以前版本中包含的那些以避免导致您的构建。

...


推荐阅读