113 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3namespace N0 {4 template<typename T>5 void f0();6 7 template<typename T>8 int x0 = 0;9 10 template<typename T>11 class C0;12}13using namespace N0;14 15template<>16void f0<int>(); // expected-error {{no function template matches}}17 18template<>19int x0<int>;20 21template<>22class C0<int>;23 24namespace N1 {25 namespace N2 {26 template<typename T>27 void f2();28 29 template<typename T>30 int x2 = 0;31 32 template<typename T>33 class C2;34 }35 using namespace N2;36}37 38template<>39void N1::f2<int>(); // expected-error {{no function template matches}}40 41template<>42int N1::x2<int>;43 44template<>45class N1::C2<int>;46 47namespace N3 {48 namespace N4 {49 template<typename T>50 void f4();51 52 template<typename T>53 int x4 = 0;54 55 template<typename T>56 class C4;57 }58 using N4::f4;59 using N4::x4;60 using N4::C4;61}62 63template<>64void N3::f4<int>(); // expected-error {{no function template matches}}65 66template<>67int N3::x4<int>;68 69template<>70class N3::C4<int>;71 72inline namespace N5 {73 template<typename T>74 void f5();75 76 template<typename T>77 int x5 = 0;78 79 template<typename T>80 class C5;81}82 83template<>84void f5<int>();85 86template<>87int x5<int>;88 89template<>90class C5<int>;91 92namespace N6 {93 inline namespace N7 {94 template<typename T>95 void f7();96 97 template<typename T>98 int x7 = 0;99 100 template<typename T>101 class C7;102 }103}104 105template<>106void N6::f7<int>();107 108template<>109int N6::x7<int>;110 111template<>112class N6::C7<int>;113