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