查看原文
其他

C++ 20 进入倒计时,有哪些值得期待的新特性?

局长 CSDN 2019-03-31



作者 | 局长

本文经授权转载自开源中国(ID:oschina2013)

刚刚结束的 C++ 标准委员会2019春季会议在夏威夷科纳举办,委员会在这次会议中确定了下一个国际标准 C++20 的全部特性,这标志着 C++20 的特性设计工作已完成。

按照 C++20 的发布计划,这次会议正是为了冻结 C++20 的特性而举办,进入特性冻结阶段(Feature freeze)意味着所有的功能特性将被冻结,并且不会再加入更多的新特性。

接下来我们看看上周会议确定添加至 C++20 草案的新特性:

  • 模块化(Modules)

  • 协程(Coroutines)

  • static, thread_local, 和 lambda capture 的结构化绑定

  • std::polymorphic_allocator<>

  • std::midpoint 和 std::lerp

  • std::execution::unseq 执行策略

  • std::ssize() 作为自由函数(free function)会返回符号大小(signed size)

  • std::span 的可用性增强

  • lookup 中新增预计算哈希值的功能(Precalculated hash values)

协程的加入应该是最大的惊喜了,值得期待!官方还表示,C++20 应该会是一个像 C++11 那样的大版本。

以下的特性已在本次会议或之前的会议上通过了批准,但尚未添加到 C++20 中,因为目前规范仍在编写中。它们有望在2019年7月的科隆会议上被加入,不过由于时间限制,可能无法完成所有工作。

  • Expansion statements

  • The C++20 synchronization library

  • std::format

  • constexpr std::vector

  • Allow constexpr allocation, but disallow allocations that are not deleted at compile time

  • constexpr std::type_info::operator==

  • New conceptification of iterators

  • Monadic operations for std::optional

  • std::source_location

  • std::flatmap

  • std::flatset

  • std::any_invocable

  • std::ostream_joiner

  • Stack trace library

  • std::byteswap

  • constinit

  • Deprecating some uses of volatile

  • Implicit creation of objects for low-level object manipulation

  • using enum

下面的这些特性,早已在之前的会议上通过了批准:

  • Concepts

  • Contracts

  • Ranges

  • operator<=>

  • A lot more constexpr features: consteval functions, std::is_constant_evaluated, constexpr union, constexpr try and catch, constexpr dynamic_cast and typeid

  • std::span

  • Synchronized output

  • std::atomic_ref

按照计划的发布进度,C++20 预计将于明年夏季推出。

C++20 发布计划

最后,看看 C++ 主要特性的开发进度。

自上次会议以来的变更:

名词解释

  • IS = 国际标准。如 C++ 编程语言:C++11, C++14, C++17 等

  • TS = 技术规范。在该阶段中,特性分支处于可使用状态,但尚未被所有厂商实现。如 Coroutines TS v1, Modules TS v1 等。

  • CD = 委员会草案,即 IS/TS 的草案,用于给标准机构进行审查和反馈("beta testing")。

据透露,工具研究小组 SG15 决定创建一个 C++ 生态系统技术报告,该报告将描述新模块化 C++ 中工具(构建系统等)的最佳实践和最新技术。

详细请内容请复制以下链接到浏览器打开查看:https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/

 热 文 推 荐 

☞ 零基础程序员如何花 8 个月时间获得特斯拉实习机会?

☞ 为什么程序员下班后只关显示器从不关电脑?

☞ 谁能主宰服务器市场?Linux 之父和 Redis 之父有分歧了

☞ 那些简历造假拿 Offer 的程序员,后来都怎么样了?

☞ 被V神点赞, 我是如何用五子棋打败以太坊排名最高的应用的? |人物志

☞ 50个最有价值的数据可视化图表(推荐收藏)

☞ 一键免费自动AI抠图,效果连PS大哥也点赞!

☞ 史上最难的一道Java面试题!

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

喜欢就点击“好看”吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存