1 struct EmptyClass {}; 2 struct DefinedClass { 3 int i; 4 }; 5 typedef DefinedClass DefinedClassTypedef; 6 7 struct FwdClass; 8 typedef FwdClass FwdClassTypedef; 9 10 template <typename T> struct DefinedTemplateClass {}; 11 template <> struct DefinedTemplateClass<int> {}; 12 13 template <typename T> struct FwdTemplateClass; 14 template <> struct FwdTemplateClass<int>; 15 16 enum class EnumClassFwd; 17 18 enum DefinedEnum { Case1 }; 19 enum DefinedEnumClass { Case2 }; 20 21 EmptyClass empty_class; 22 DefinedClass defined_class; 23 DefinedClassTypedef defined_class_typedef; 24 25 FwdClass *fwd_class; 26 FwdClassTypedef *fwd_class_typedef; 27 28 DefinedTemplateClass<int> defined_template_class; 29 FwdTemplateClass<int> *fwd_template_class; 30 31 EnumClassFwd *fwd_enum_class = nullptr; 32 33 DefinedEnum defined_enum = Case1; 34 DefinedEnumClass defined_enum_class = DefinedEnumClass::Case2; 35 main()36int main() {} 37