【发布时间】:2016-12-01 02:27:27
【问题描述】:
我在http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf 浏览了有关结构化绑定的论文,但我无法很好地了解语法允许绑定到哪些类型的结构。我最好的猜测是结构必须是聚合类型。或者只有公共数据成员的东西。
我对此有什么遗漏吗?
【问题讨论】:
-
对和元组似乎是很好的例子,并且映射节点类型。
-
@KerrekSB :) 是的,我明白了,我只是想了解更多关于它们可以绑定到哪些类型的结构的详细信息,例如我有自己的结构。
-
当然。如果您不想依赖公共成员,例如可以针对您的类型专门化
std::get和std::tuple_size。 -
“聚合”是关于初始化,而不是布局。您可能想要一些更接近“标准布局”的条件(尽管您确实需要所有成员都是公开的,而不仅仅是具有相同的访问级别)。
-
@KerrekSB 啊是的,我没想过专门研究
std::get和std::tuple_size。虽然我不确定这是否足以确保结构化绑定语法适用于任何类/结构。
标签: c++ c++14 c++17 structured-bindings