Компиляция моего кода как С++ 11 с gcc 4.8.2
и llvm/clang 3.4
на fedora-linux, я получил странные результаты, которые я не мог объяснить...
вот аналогичная программа fedora.
#include <iostream>
using namespace std;
struct A {};
struct C {};
struct B1 : A { union { A a;}; };
struct B2 : A { union { C c;}; };
int main()
{
cout << sizeof(B1) << " " << sizeof(B2) << endl;
}
sizeof(B1) = 2
и sizeof(B2) = 1
Но почему разные размеры? На самом деле у меня есть идея "почему", но я хочу найти точное объяснение или правило С++.