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

xml*_*lmx 4 c++ struct type-traits standard-layout c++11

一段代码值得千言万语.

#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; 
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*Mat 7

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

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

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