一、c++20标准
目前c++标准有c++98、c++03、c++11、c++14、c++17、c++20;
-
C++ 98
C++标准第一版,1998年发布。正式名称为ISO/IEC 14882:1998。
绝大多数编译器都支持C++98标准。不过当时错误地引入了export关键字。由于技术上的实现难度,除了Comeau C++编译器export关键字以外,没有任何编译器支持export关键字。并且这个标准对现代的一些编译理念有相当的差距,有很多在高级语言都应当有的功能,它都没有。这也正是后来需要制定C++11标准的原因所在。 -
C++ 03
C++标准第二版,2003年发布。正式名称为ISO/IEC 14882:2003。这个标准仅仅是C++98修订版,与C++98几乎一样,没做什么修改。仅仅是对C++98做了一些“勘误”,就连主流编译器(受C99标准影响)都已支持的long long都没有被加入C++03标准。 -
C++ 11
C++标准第三版,2011年8月12日发布。正式名称为ISO/IEC 14882:2011。
由C++标准委员会于2011年8月12日公布,并于2011年9月出版。2012年2月28日的国际标准草案(N3376)是最接近于现行标准的草案(编辑上的修正)。C++11包含了核心语言的新机能,并且拓展C++标准程序库,并且加入了大部分的C++ Technical Report 1程序库(数学上的特殊函数除外)。此次标准为C++98发布后13年来第一次重大修正。 -
C++ 14
C++标准第四版,2014年8月18日发布。正式名称为ISO/IEC 14882:2014。
2014年8月18日,ISO组织在其网站上发布文章称:
C++ 作者 Bjarne Stroustrup 称,主要的编译器开发商已经实现了 C++ 14 规格。
C++ 14 是 C++ 11 的增量更新,主要是支持普通函数的返回类型推演,泛型 lambda,扩展的 lambda 捕获,对 constexpr 函数限制的修订,constexpr变量模板化等。 -
C++ 17
2017年12月5日发布,正式名称为 ISO/IEC 14882:2017。 -
C++ 20
2020年12月18日发布,正式名称为 ISO/IEC 14882:2020。
C++20新特性:
模块 (Modules)
协程 (Coroutines)
范围 (Ranges)
概念与约束 (Constraints and concepts)
指定初始化 (designated initializers)
操作符 <=> != ==
constexpr支持:new/ delete、dynamic_cast、try/ catch、虚拟
constexpr 向量和字符串
计时:日历、时区支持
std::format
std::span
std::jthread
二、visual studio哪个版本支持c++20标准
- 微软的visual studio,从vs2019开始支持c++20标准
The /Zc:char8_t option is available starting in Visual Studio 2019 version 16.1. It’s enabled automatically when you specify /std:c++20 or later (such as /std:c++latest). Otherwise, it’s off by default.
参见:Zc:char8_t (Enable C++20 char8_t type)
三、vs设置支持的c++语言标准
- 【项目】-【属性】-【配置属性】-【c/c++】-【语言】
- 把【c++语言标准】选择为【ISO C++20 标准 (/std:c++20)】
- 然后就支持c++20标准了
四、demo
- char8_t为c++20中定的关键字,如下图所示,支持char8_t。