4
一段代码胜过千言万语。为什么这个结构不是标准布局?
#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;
}
其中有'B b; cout <<(reinterpret_cast(&b)==(&b.b))<< endl;'输出false。 –
@PeteKirkham:这与此有关吗? '&b ==&b.a'应该在这里输出'true'。 –
@MatthieuM .:是的,我相信皮特的评论是相关的。如果“B”是标准布局,他的表达式将会输出真值。 – Mat