我在这里浏览了关于结构化绑定的论文http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf但是我无法很好地理解语法允许绑定的结构类型。我最好的猜测是结构必须是聚合类型。或者只有公共数据成员的东西。
我对此缺少任何警告吗?
答案 0 :(得分:5)
如果您不想为您的类型专门设置std::tuple_size
,std::tuple_element
和get
,则[dcl.decomp]需要:
否则,所有
E
的非静态数据成员都应是E
的公共直接成员或明确无误的成员 公共基类E
,E
不应具有匿名联合成员,以及 identifier-list应等于E
的非静态数据成员的数量。
基本上所有数据成员都需要在同一个类中声明,并且它们都需要公开,并且您需要提供与成员相同数量的名称。