关于"structural binding"的提案在哪里?

Where is the proposal on "structural binding"?

本文关键字:在哪里 structural binding 关于      更新时间:2023-10-16

在下面的C++走向原生视频中,
其中提到了一种叫做"结构绑定"的语言特性。

我曾经将这个概念称为"destructuring"(javascript背景的混合)。

该功能允许用户捕获多个返回值,而无需使用std::tie或指定类型。

示例:

std::map<std::string,int> table;
auto { cursor, inserted } = table.insert({"hello",0});  

我在哪里可以找到此提案,并跟踪其进度?

您所指的方案是P0144R0:结构化绑定。科纳邮报将本文列为进化工作组的一部分。它不在当前的进化工作组(EWG)活动问题列表中,Nicol Bolos指出,EWG活动问题列表尚未更新Kona。一旦它出现在EWG活动列表中,您就可以通过跟踪问题来跟踪提案。

有一些非常好的旅行报告,特别是Botond Ballo的旅行报告在建议一节中涵盖了这一建议,鼓励进一步开展工作,其中写道:

一项关于重组初始化的提案,该提案将允许编写auto{x,y,z}=expr;其中expr的类型是类似元组的对象,其元素将绑定到变量x、y和z(construct声明)。"元组对象"包括std::Tuple,std::pair、std::array和聚合结构。该提案缺乏将非聚合用户定义类型调整为"tuple-like",并使用此语法;EWG的反馈是机制很重要。此外,EWG建议扩展以允许(可选地)指定x、y和z的类型,而不是推导它们的类型。

我们可以通过访问WG21网站和论文部分找到WG21会议邮件。

正如T.C.所指出的,还有一个竞争提案P0151R0:多申报人提案,上面写着:

我们提出了一种更好的"结构化绑定"方法,如中所定义P0144R0,其中"更好"定义为简洁、更正交、更多一般的,更有表现力的,不那么含糊的。