| // Build with "cl.exe /Zi /GR- /GX- every-type.cpp /link /debug /nodefaultlib /entry:main" |
| |
| // clang-format off |
| void *__purecall = 0; |
| |
| void __cdecl operator delete(void *,unsigned int) {} |
| void __cdecl operator delete(void *,unsigned __int64) {} |
| |
| struct FooStruct { }; // LF_STRUCTURE |
| |
| class FooClass { // LF_CLASS |
| public: |
| // LF_FIELDLIST |
| enum NestedEnum { // LF_ENUM |
| // LF_NESTTYPE |
| A, B, C // LF_ENUMERATE |
| }; |
| |
| void RegularMethod() {} // LF_ARGLIST |
| // LF_ONEMETHOD |
| // LF_MFUNCTION |
| |
| void OverloadedMethod(int) {} // LF_METHODLIST |
| // LF_METHOD |
| void OverloadedMethod(int, int) {} |
| |
| int HiNibble : 4; // LF_BITFIELD |
| int LoNibble : 4; |
| NestedEnum EnumVariable; // LF_MEMBER |
| static void *StaticMember; // LF_POINTER |
| // LF_STMEMBER |
| }; |
| |
| void *FooClass::StaticMember = nullptr; |
| |
| class Inherit : public FooClass { // LF_BCLASS |
| public: |
| virtual ~Inherit() {} // LF_VTSHAPE |
| // LF_VFUNCTAB |
| }; |
| |
| class VInherit : public virtual FooClass { // LF_VBCLASS |
| |
| }; |
| |
| class IVInherit : public VInherit { // LF_IVBCLASS |
| }; |
| |
| union TheUnion { |
| int X; // LF_UNION |
| }; |
| |
| int SomeArray[7] = {1, 2, 3, 4, 5, 6, 7}; // LF_ARRAY |
| |
| template<typename T> |
| void Reference(T &t) { } |
| |
| const volatile FooStruct FS; // LF_MODIFIER with struct |
| const volatile FooClass FC; // LF_MODIFIER with class |
| const volatile TheUnion TU; // LF_MODIFIER with union |
| const volatile FooClass::NestedEnum FCNE = FooClass::A; // LF_MODIFIER with enum |
| |
| |
| int main(int argc, char **argv) { // LF_PROCEDURE |
| const int X = 7; // LF_MODIFIER |
| |
| FooStruct FooStructInstance; |
| FooClass FooClassInstance; |
| Inherit InheritInstance; |
| VInherit VInheritInstance; |
| IVInherit IVInheritInstance; |
| TheUnion UnionInstance; |
| Reference(FS); // LF_MODIFIER with struct |
| Reference(FC); // LF_MODIFIER with class |
| Reference(TU); // LF_MODIFIER with union |
| Reference(FCNE); // LF_MODIFIER with enum |
| return SomeArray[argc]; |
| } |