关于"structural binding"的提案在哪里?
Where is the proposal on "structural binding"?
在下面的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,其中"更好"定义为简洁、更正交、更多一般的,更有表现力的,不那么含糊的。
相关文章:
- C++我需要了解在哪里使用指针和双指针
- 未定义的引用在哪里
- 谷歌测试中的期望值存储在哪里
- 尽管遵循了规则,内存泄漏在哪里
- 静态数据成员模板专用化的实例化点在哪里
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 在哪里声明结构运算符重载
- C++ 中的自定义异常:在哪里定义它们?
- 常量参数存储在哪里 (C++)?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 此递归函数的每次迭代的值存储在哪里?
- 如何告诉本机节点模块所需的dll存储在哪里?
- 在哪里存储跨平台C++应用存储?
- C++泛型类错误,问题出在哪里?
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 将类作为主要参数的语法在哪里需要?
- 模板参数在 C++ 中存储在哪里?
- 我的重复检查代码中的错误究竟在哪里?
- 在哪里可以找到 std::bitset 的数据成员?
- 关于"structural binding"的提案在哪里?