微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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 举报,一经查实,本站将立刻删除。