|  | // Compile with "cl /c /Zi /GR- ClassLayoutTest.cpp" | 
|  | // Link with "link ClassLayoutTest.obj /debug /nodefaultlib /entry:main" | 
|  |  | 
|  | namespace MembersTest { | 
|  | class A { | 
|  | public: | 
|  | typedef int NestedTypedef; | 
|  | enum NestedEnum { | 
|  | NestedEnumValue1 | 
|  | }; | 
|  |  | 
|  | void MemberFunc() {} | 
|  |  | 
|  | private: | 
|  | int IntMemberVar; | 
|  | double DoubleMemberVar; | 
|  | }; | 
|  | } | 
|  |  | 
|  | namespace GlobalsTest { | 
|  | int IntVar; | 
|  | double DoubleVar; | 
|  |  | 
|  | typedef int Typedef; | 
|  | enum Enum { | 
|  | Val1 | 
|  | } EnumVar; | 
|  | Typedef TypedefVar; | 
|  | } | 
|  |  | 
|  | namespace BaseClassTest { | 
|  | class A {}; | 
|  | class B : public virtual A {}; | 
|  | class C : public virtual A {}; | 
|  | class D : protected B, private C {}; | 
|  | } | 
|  |  | 
|  | namespace UdtKindTest { | 
|  | struct A {}; | 
|  | class B {}; | 
|  | union C {}; | 
|  | } | 
|  |  | 
|  | namespace BitFieldTest { | 
|  | struct A { | 
|  | int Bits1 : 1; | 
|  | int Bits2 : 2; | 
|  | int Bits3 : 3; | 
|  | int Bits4 : 4; | 
|  | int Bits22 : 22; | 
|  | int Offset0x04; | 
|  | }; | 
|  | }; | 
|  |  | 
|  | int main(int argc, char **argv) { | 
|  | MembersTest::A v1; | 
|  | v1.MemberFunc(); | 
|  | BaseClassTest::D v2; | 
|  | UdtKindTest::A v3; | 
|  | UdtKindTest::B v4; | 
|  | UdtKindTest::C v5; | 
|  | BitFieldTest::A v7; | 
|  | return 0; | 
|  | } |