为什么结构化绑定不适用于普通派生类?

问题描述

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 (将#修改为@)