1 // RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify %s
2 // RUN: %clang_cc1 -fms-extensions -fdelayed-template-parsing -fsyntax-only -verify %s
4 // expected-no-diagnostics
7 template<class U
> A(U p
) {}
10 template<class U
> void f(U p
) {}
12 template<> void f(int p
) {}
25 template<class T
> class B
{
27 template<class U
> B(U p
) {}
28 template<> B(int p
) {}
30 template<class U
> void f(U p
) { T y
= 9; }
32 template<> void f(int p
) {
36 void f(int p
) { T a
= 3; }
48 template<class T
> class TemplateClass
{
49 void member_function() { specialized_member_template
<false>(); }
51 template<bool b
> void specialized_member_template() {}
53 template<> void specialized_member_template
<false>() {}
56 void f() { TemplateClass
<int> t
; }
59 namespace Duplicates
{
60 template<typename T
> struct A
{
61 template<typename U
> void f();
62 template<> void f
<int>() {}
63 template<> void f
<T
>() {}
66 // FIXME: We should diagnose the duplicate explicit specialization definitions
68 template struct A
<int>;