C++20,是继C++17之后的C++编程语言的ISO/IEC标准修订版的名称。年2月,该标准在布拉格的会议上由WG21进行了技术定稿。同年9月4日草案获得批准后,C++20目前正处于最终批准过程中。相比C++17,C++20引入了新的语言概念、模块、操作符“=”、协程、指定初始化、新标准属性等。C++20库标准还加入了范围、特性测试宏和位操作等。
C++一直以来都是编程界的翘楚,一直和Java不分上下,这不最新版本的C++20马上就要来了。就在前几天也就是9月4日,C++20的国际标准草案(DIS,DraftInternationalStandard)投票结束,最终获得全票批准通过。
这就意味着C++20已获得了最终的技术批准,并完成了ISO的投票,预计在完成最后一轮ISO的编辑工作后,C++20将在年底正式发布(虽然我不是做C++工作的,不过好期待)。
C++20与上个版本(C++17)相比是一次重大的更新,引入了许多新特性,下面我们就来看看吧:
模块(Modules)协程(Coroutines)范围(Ranges)概念与约束(Constraintsandconcepts)指定初始化(designatedinitializers)操作符=!===constexpr支持:new/delete、dynamic_cast、try/catch、虚拟constexpr向量和字符串计时:日历、时区支持std::formatstd::spanstd::jthread像Concepts/Ranges/Modules/Coroutines这些新特性将会对开发者及C++生态产生不小的影响,也为这门“高龄”编程语言增添不少魅力。工具方面,GCC10编译器对C++20标准已基本支持,在更早的GCC8/9中,目前尚待完成的是对modules的支持。GCCWiki页面概述了目前正在进行的工作。此外,ClangC++状态报告页面显示已完成了对大部分特性的支持,待完成的包括concepts,immediatefunctions,modules和其他功能。
ISOC++标准委员会主席HerbSutter还介绍了C++23的相关会议和进度表(真是的C++20还没有放出来就开始搞C++23了,这是不是怕网友说他们拿着资金不办事?)。