blob: e5395b6c7ed83b452b838d06e22ca54da43194a8 [file] [log] [blame]
Richard Smith0c1065f2013-10-15 23:19:58 +00001template<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};
Richard Smith547864d2014-07-11 18:22:58 +00008
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; }
Richard Smith337f7c92014-10-10 22:37:41 +000014
15template<typename T1 = int>
16struct MergeAnonUnionMember {
17 MergeAnonUnionMember() { (void)values.t1; }
18 union { int t1; } values;
19};
20inline MergeAnonUnionMember<> maum_c() { return {}; }
Richard Smith41c79d92014-10-11 00:37:16 +000021
22template<typename T> struct DontWalkPreviousDeclAfterMerging { struct Inner { typedef T type; }; };
23typedef DontWalkPreviousDeclAfterMerging<char>::Inner dwpdam_typedef;
Richard Smith6377f8f2014-10-21 21:15:18 +000024
25namespace TestInjectedClassName {
26 template<typename T> struct X { X(); };
27 typedef X<char[3]> C;
28}