问题描述
struct A
{
int a;
};
struct B : A
{
int b;
};
int main()
{
auto [a,b] = B{1,2}; // error
}
我认为 auto [a,2};
在这里很直观且富有表现力。但是,在当前的 C++ 中这是不合法的。因为 cppref 说:
案例 3:绑定到数据成员
E 的每个非静态数据成员都必须 是 E 的直接成员或 E 的相同基类,并且必须是 当命名为时,在结构化绑定的上下文中格式良好 e.name.
从技术上讲,我认为上面的代码可以在 C++ 中定义为合法的。
为什么 C++ 标准不允许?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)