1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 3 template<typename T> class vector2 {}; 4 template<typename T> class vector : vector2<T> {}; 5 6 template<typename T> void Foo2(vector2<const T*> V) {} // expected-note{{candidate template ignored: can't deduce a type for 'T' which would make 'const T' equal 'int'}} 7 template<typename T> void Foo(vector<const T*> V) {} // expected-note {{candidate template ignored: can't deduce a type for 'T' which would make 'const T' equal 'int'}} 8 9 void test() { 10 Foo2(vector2<int*>()); // expected-error{{no matching function for call to 'Foo2'}} 11 Foo(vector<int*>()); // expected-error{{no matching function for call to 'Foo'}} 12 } 13 14 namespace rdar13267210 { 15 template < typename T > class A { 16 BaseTy; // expected-error{{C++ requires a type specifier for all declarations}} 17 }; 18 19 template < typename T, int N > class C: A < T > {}; 20 21 class B { 22 C<long, 16> ExternalDefinitions; 23 C<long, 64> &Record; 24 25 void AddSourceLocation(A<long> &R); // expected-note{{passing argument to parameter 'R' here}} 26 void AddTemplateKWAndArgsInfo() { 27 AddSourceLocation(Record); // expected-error{{non-const lvalue reference to type}} 28 } 29 }; 30 } 31