#include <iostream>
using namespace std;
class Empty
{};
class Derived1 : public Empty
{};
class Derived2 : virtual public Empty
{};
class Derived3 : public Empty
{
char c;
};
class Derived4 : virtual public Empty
{
char c;
};
class Dummy
{
char c;
};
int main()
{
cout << "sizeof(Empty) " << sizeof(Empty) << endl;
cout << "sizeof(Derived1) " << sizeof(Derived1) << endl;
cout << "sizeof(Derived2) " << sizeof(Derived2) << endl;
cout << "sizeof(Derived3) " << sizeof(Derived3) << endl;
cout << "sizeof(Derived4) " << sizeof(Derived4) << endl;
cout << "sizeof(Dummy) " << sizeof(Dummy) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRW1wdHkKe307CgpjbGFzcyBEZXJpdmVkMSA6IHB1YmxpYyBFbXB0eQp7fTsKCmNsYXNzIERlcml2ZWQyIDogdmlydHVhbCBwdWJsaWMgRW1wdHkKe307CgpjbGFzcyBEZXJpdmVkMyA6IHB1YmxpYyBFbXB0eQp7ICAgIApjaGFyIGM7Cn07CgpjbGFzcyBEZXJpdmVkNCA6IHZpcnR1YWwgcHVibGljIEVtcHR5CnsKY2hhciBjOwp9OwoKY2xhc3MgRHVtbXkKewogY2hhciBjOwp9OwoKaW50IG1haW4oKQp7CgogICAgY291dCA8PCAic2l6ZW9mKEVtcHR5KSAiIDw8IHNpemVvZihFbXB0eSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgInNpemVvZihEZXJpdmVkMSkgIiA8PCBzaXplb2YoRGVyaXZlZDEpIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJzaXplb2YoRGVyaXZlZDIpICIgPDwgc2l6ZW9mKERlcml2ZWQyKSA8PCBlbmRsOwogICAgY291dCA8PCAic2l6ZW9mKERlcml2ZWQzKSAiIDw8IHNpemVvZihEZXJpdmVkMykgPDwgZW5kbDsKICAgIGNvdXQgPDwgInNpemVvZihEZXJpdmVkNCkgIiA8PCBzaXplb2YoRGVyaXZlZDQpIDw8IGVuZGw7ICAgIAogICAgY291dCA8PCAic2l6ZW9mKER1bW15KSAiIDw8IHNpemVvZihEdW1teSkgPDwgZW5kbDsKICAgIHJldHVybiAwOwoKfQ==