繁体   English   中英

为什么这个结构不是标准布局?

[英]Why is this struct not standard-layout?

一段代码值得千言万语。

#include <iostream>
#include <type_traits>

using namespace std;

struct A
{
    int a;
};

struct B : A
{
    int b;
};

int main()
{
    cout << is_standard_layout<B>::value << endl; // output false! WHY?
    return 0; 
}

从标准布局类的定义(§9类,第7段)

[...]
*要么在大多数派生类中没有非静态数据成员,要么最多只有一个具有非静态数据成员的基类,或者没有带有非静态数据成员的基类,并且
[...]

在您的情况下,派生程度最高的类及其基类都具有非静态数据成员。 所以这不是标准布局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM