59

假设我有一个类型的对象

std::map<std::string, std::tuple<int, float>> data;

是否可以像这样以嵌套方式(即在范围 for 循环中使用时)访问元素类型

for (auto [str, [my_int, my_float]] : data) /* do something */
4

2 回答 2

34

不,这是不可能的。

我清楚地记得在某处读到 C++17 不允许嵌套结构化绑定,但他们正在考虑在未来的标准中允许它。虽然找不到来源。

于 2018-02-28T18:00:41.167 回答
22

不,它们是不可能的;但这是:

for (auto&& [key, value] : data) {
  auto&& [my_int, my_float] = value;
}

至少很接近。

于 2018-02-28T22:43:20.507 回答