1 struct Empty {};
2 class EmptyClass {};
3 
4 struct SingleMember {
5   int i;
6 };
7 class SingleMemberClass {
8   int i;
9 };
10 
11 struct PaddingMember {
12   int i;
13   char c;
14 };
15 class PaddingMemberClass {
16   int i;
17   char c;
18 };
19 
20 const unsigned sizeof_empty = sizeof(Empty);
21 const unsigned sizeof_empty_class = sizeof(EmptyClass);
22 const unsigned sizeof_single = sizeof(SingleMember);
23 const unsigned sizeof_single_class = sizeof(SingleMemberClass);
24 const unsigned sizeof_padding = sizeof(PaddingMember);
25 const unsigned sizeof_padding_class = sizeof(PaddingMemberClass);
26 
27 int main() {
28   Empty empty;
29   EmptyClass empty_class;
30   SingleMember single;
31   SingleMemberClass single_class;
32   PaddingMember padding;
33   PaddingMemberClass padding_class;
34   // Make sure globals are used.
35   return sizeof_empty + sizeof_empty_class + sizeof_single +
36     sizeof_single_class + sizeof_padding + sizeof_padding_class;
37 }
38