1 // RUN: %clang_cc1 -ast-print %s | FileCheck %s
3 template<typename T
, typename U
> void f(U
);
4 template<int> void f();
8 // CHECK: N::f<int>(3.14
11 // CHECK: N::f<double>
12 void (*fp
)(int) = N::f
<double>;
16 // (NNS qualified) DeclRefExpr.
23 // CHECK: DRE::foo<int>;
25 // CHECK: DRE::template foo<int>;
26 DRE::template foo
<int>;
27 // CHECK: DRE::foo<int>();
29 // CHECK: DRE::template foo<int>();
30 DRE::template foo
<int>();
46 // CHECK: s.mem<int>();
48 // CHECK: s.template mem<int>();
49 s
.template mem
<int>();
55 // UnresolvedLookupExpr.
63 // CHECK: ULE::foo<T>;
65 // CHECK: ULE::template foo<T>;
72 // UnresolvedMemberExpr.
85 // CHECK: s.template mem<U>();
92 // DependentScopeDeclRefExpr.
102 // CHECK: S<T>::template foo<>;
103 S
<T
>::template foo
<>;
104 // CHECK: S<T>::template foo<T>;
105 S
<T
>::template foo
<T
>;
111 // DependentScopeMemberExpr.
114 template <typename T
>
117 template <typename T
>
122 // CHECK: s.template foo<>;
124 // CHECK: s.template foo<T>;