前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >快报!c++26第五次会议总结

快报!c++26第五次会议总结

作者头像
王很水
发布2024-11-25 14:14:44
发布2024-11-25 14:14:44
1810
举报

欢迎来到C++26的第五次会议,也是feature freeze之前的倒数第二次会议。本次会议共约230人参与,31个NB参会,依然是传统的线下:线上=2:1模式

在通过的提案方面,本次共通过8篇语言提案和19篇库提案。这比上次会议的7+12要多一些,和东京正好持平。

语言方面,最重磅的也是最坎坷的提案无疑是P1061 auto [...xs] = ... (structured binding packs)

作为上次Plenary中被撤销的提案,P1061本来应该波澜不惊地再次投票。没想到的是,EWG第三天的讨论中MSVC开发者提出了对实现难度的抗议,差一点导致本提案倒在Stage 2。幸运的是,最后作者找到了一个妥协方案,将带pack的structured binding限制在只能在模版中使用,从而成功进入标准。

除此之外,语言方面还通过了P3068,允许在编译期抛出异常。(当然,异常不能离开编译期,编译抛运行catch是不行的),并且常规deprecate了一批特性(is_trivial,不带逗号的varargs语法)。

LWG方面,最重磅的提案无疑是极度坎坷的P1928 std::simd。本提案的历史极其悠久,从2013年的N3759初创之后,-> N4184/5 -> N4395 -> P0214R9这14个revision之后终于在2018年修成半个正果,成功进入Parallelism TS v2。不过,随后的IS merge依然极度艰难,大规模的设计改动和名称反复贯穿了P1928的历史,最终在用了十年,30个revision之后终于成功进入C++26。

本提案事实上大体标准化了SIMD指令,让标准中可以直接像操纵其他原生类型一样操作SIMD向量。至此,C++26标准库的两个T0和一个T0.5特性均已成功进入标准,L(E)WG成功提前完成了自己本周期的目标。下一次会议的主要目标看来就是搞定hive这个老大难。


另一个重点提案就是P3019 indirect/polymorphic,即一个deep copy版的智能指针。从cloned_ptr走到indirect_value走到indirect,花了P0201R6 -> P3019R11的19个revision才走完这条路,不过好歹是走完了。现在pimpl就可以用标准解法了。

除此之外,本次搞定了大量的线性代数bugfix提案,包括aligned_accessor,submdspan fix等对C++26至关重要的提案被成功完成(还剩下atomic_accessor和rank-2k两个提案,预计下次吧)。

另外,本次会议还迈出了C23 rebase的第一步,成功将C23新增的两个头文件(bits,安全整数加法)加入了C++26。

本次会议的Stage 2工作组相对来说更有看点一些。EWG方面,P2786平凡迁移和P2900 Contracts均成功被推进Stage 3,但是两者的争议都非常大,forwarding poll可以说是barely consensus,要避免Plenary的失败还有很长的路要走。第三天的讨论中,反射终于确定了使用^^语法(unibrow),并逐渐开始在一些post-P2996反射提案上有了进展(比如consteval block,可惜expansion statement依然卡死着)

第四天早上是模式匹配的主场,虽然这一特性进入26的希望已经非常渺茫,但是P2688仍然在为此努力,并成为了EWG选择的语法而不是P2392的is/as。较为遗憾的是,原本应该在本次会议通过的fiber_context在最后一刻找到了Windows下的实现难题,只得推迟到下个周期去了。

LEWG方面,P2996反射和P2900 Contracts同样进入了Stage 3,从而扫清了这两个语言的主要目标在库这边的障碍。除此之外,整周大部分都在搞S&R相关扩展,例如async_scope,system scheduler等对P2300发挥作用至关重要的补充提案拿到了一定进展(所以lazy啥时候有人愿意接手…)。

遗憾的是,concurrent queue依然在Concurrency TS v3和IS之间举棋不定,进入26的希望已经较为渺茫。除此之外,type_order_v也进入了Stage 3,有望给所有类型一个标准化的偏序关系。

Stage 1工作组方面,SG9 Ranges完成了Range化的并行算法的设计,但是离自己的plan依然差的有点远()。SG21 Contracts在完善Wording的同时,已经渐渐转向post-MVP特性,例如把语言UB大部分转成Contracts。SG23 Security完成了Profile的初版设计,不过前景究竟如何还要看看。

展望明年的会议总体情况,“双边反转”已经基本成为事实,20/23周期的末尾都是LWG提案太多完不成不得不扔掉一些,这次LWG已经完成了绝大多数大提案,队伍反而不是很挤。提案太多完不成的变成了CWG,队伍里三个大提案实在有点吃不消,要做好CWG扔掉一堆小提案的准备。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CPP每周推送 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档