如何解决为什么结构化绑定不适用于普通派生类?
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 举报,一经查实,本站将立刻删除。