| 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; |
| } |