| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| |
| template<int i> class A { }; |
| template<short s> void f(A<s>); // expected-note{{candidate template ignored: substitution failure}} |
| |
| void k1() { |
| A<1> a; |
| f(a); // expected-error{{no matching function for call}} |
| f<1>(a); |
| } |
| template<const short cs> class B { }; |
| template<short s> void g(B<s>); |
| void k2() { |
| B<1> b; |
| g(b); // OK: cv-qualifiers are ignored on template parameter types |
| } |
| |
| template<short s> void h(int (&)[s]); // expected-note{{candidate function template not viable: requires 1 argument, but 2 were provided}} |
| void k3() { |
| int array[5]; |
| h(array); |
| h<5>(array); |
| } |
| |
| template<short s> void h(int (&)[s], A<s>); // expected-note{{candidate template ignored: substitution failure}} |
| void k4() { |
| A<5> a; |
| int array[5]; |
| h(array, a); // expected-error{{no matching function for call}} |
| h<5>(array, a); |
| } |