【发布时间】:2018-02-28 17:53:20
【问题描述】:
假设我有一个类型的对象
std::map<std::string, std::tuple<int, float>> data;
是否可以像这样以嵌套方式(即在范围 for 循环中使用时)访问元素类型
for (auto [str, [my_int, my_float]] : data) /* do something */
【问题讨论】:
-
你试过了吗?
-
是的,我试过了。它不适用于上面的语法。这就是为什么我要问这是否可能。
-
一个问题是:如何告诉 C++ 为每个嵌套的引入名称集绑定到的每个隐藏对象使用什么 const/reference-ness? const/reference 限定符指的是所述隐藏对象,而不是为其成员/
get()引入的别名。在这种情况下,如果两者相同,我看不出有什么关系,也无法立即想到需要不同限定符的情况,但是如果它们是第二类,我不希望 C++ 添加嵌套的结构化绑定与我们目前拥有的相比。当语法可能已经很紧张时,让它们成为一等似乎很危险!
标签: c++ c++17 structured-bindings