29 lines · c
1template<typename> struct MergeSpecializations;2template<typename T> struct MergeSpecializations<T[]> {3 typedef int partially_specialized_in_c;4};5template<> struct MergeSpecializations<bool> {6 typedef int explicitly_specialized_in_c;7};8 9template<typename T> struct MergeTemplateDefinitions {10 static constexpr int f();11 static constexpr int g();12};13template<typename T> constexpr int MergeTemplateDefinitions<T>::g() { return 2; }14 15template<typename T1 = int>16struct MergeAnonUnionMember {17 MergeAnonUnionMember() { (void)values.t1; }18 union { int t1; } values;19};20inline MergeAnonUnionMember<> maum_c() { return {}; }21 22template<typename T> struct DontWalkPreviousDeclAfterMerging { struct Inner { typedef T type; }; };23typedef DontWalkPreviousDeclAfterMerging<char>::Inner dwpdam_typedef;24 25namespace TestInjectedClassName {26 template<typename T> struct X { X(); };27 typedef X<char[3]> C;28}29