| struct Empty {}; | |
| class EmptyClass {}; | |
| class alignas(4) EmptyClassAligned {}; | |
| class ClassEmptyMember { | |
| int i[0]; | |
| }; | |
| struct SingleMember { | |
| int i; | |
| }; | |
| class SingleMemberClass { | |
| int i; | |
| }; | |
| struct PaddingMember { | |
| int i; | |
| char c; | |
| }; | |
| class PaddingMemberClass { | |
| int i; | |
| char c; | |
| }; | |
| const unsigned sizeof_empty = sizeof(Empty); | |
| const unsigned sizeof_empty_class = sizeof(EmptyClass); | |
| const unsigned sizeof_empty_class_aligned = sizeof(EmptyClassAligned); | |
| const unsigned sizeof_class_empty_member = sizeof(ClassEmptyMember); | |
| const unsigned sizeof_single = sizeof(SingleMember); | |
| const unsigned sizeof_single_class = sizeof(SingleMemberClass); | |
| const unsigned sizeof_padding = sizeof(PaddingMember); | |
| const unsigned sizeof_padding_class = sizeof(PaddingMemberClass); | |
| int main() { | |
| Empty empty; | |
| EmptyClass empty_class; | |
| EmptyClassAligned empty_class_aligned; | |
| ClassEmptyMember class_empty_member; | |
| SingleMember single; | |
| SingleMemberClass single_class; | |
| PaddingMember padding; | |
| PaddingMemberClass padding_class; | |
| // Make sure globals are used. | |
| return sizeof_empty + sizeof_empty_class + sizeof_class_empty_member + | |
| sizeof_single + +sizeof_empty_class_aligned + sizeof_single_class + | |
| sizeof_padding + sizeof_padding_class; | |
| } |