簡體   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