【发布时间】:2016-10-30 19:57:00
【问题描述】:
我找到了*C++ 结构化绑定here 的原始提案。它提出了一种轻松绑定多个返回值的方法,即:
auto {a, b} = minmax(data);
但是现在看到大家都指向了C++17/C++1z的提案语法
auto [a, b] = minmax(data);
既然我学会了“列表是写成 { 就像,这个 }”,那么有一个新的列表语法吗?为什么?这里的大括号有什么问题?
【问题讨论】:
-
通常这种古怪的变化与简化解析器的工作有关。
-
大括号的一个问题是大括号直到现在才划定范围,而在这里他们不会。相比之下,您可以将方括号想象成 lambda 捕获列表中的样子,并且效果相当不错。
-
注意:目前还没有 C++17。 C++17 仍在开发中。至少要到 2 月才能确定其中会出现什么,不会出现什么,以及以何种形式出现。
-
我们确实有一些 NB cmets 请求
{},所以我们会看到... -
Chandler Carruth 对这个问题的回答:youtu.be/430o2HMODj4?t=15m50s
标签: c++ c++17 structured-bindings