template struct MergeSpecializations; template struct MergeSpecializations { typedef int partially_specialized_in_c; }; template<> struct MergeSpecializations { typedef int explicitly_specialized_in_c; }; template struct MergeTemplateDefinitions { static constexpr int f(); static constexpr int g(); }; template constexpr int MergeTemplateDefinitions::g() { return 2; } template struct MergeAnonUnionMember { MergeAnonUnionMember() { (void)values.t1; } union { int t1; } values; }; inline MergeAnonUnionMember<> maum_c() { return {}; } template struct DontWalkPreviousDeclAfterMerging { struct Inner { typedef T type; }; }; typedef DontWalkPreviousDeclAfterMerging::Inner dwpdam_typedef; namespace TestInjectedClassName { template struct X { X(); }; typedef X C; }