1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 3 4 template<typename T> class vector2 {}; 5 template<typename T> class vector : vector2<T> {}; 6 7 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'}} 8 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'}} 9 10 void test() { 11 Foo2(vector2<int*>()); // expected-error{{no matching function for call to 'Foo2'}} 12 Foo(vector<int*>()); // expected-error{{no matching function for call to 'Foo'}} 13 } 14 15 namespace rdar13267210 { 16 template < typename T > class A { 17 BaseTy; // expected-error{{C++ requires a type specifier for all declarations}} 18 }; 19 20 template < typename T, int N > class C: A < T > {}; 21 22 class B { 23 C<long, 16> ExternalDefinitions; 24 C<long, 64> &Record; 25 26 void AddSourceLocation(A<long> &R); // expected-note{{passing argument to parameter 'R' here}} 27 void AddTemplateKWAndArgsInfo() { 28 AddSourceLocation(Record); // expected-error{{non-const lvalue reference to type}} 29 } 30 }; 31 } 32 33 namespace PR16292 { 34 class IncompleteClass; // expected-note{{forward declaration}} 35 class BaseClass { 36 IncompleteClass Foo; // expected-error{{field has incomplete type}} 37 }; 38 template<class T> class DerivedClass : public BaseClass {}; 39 void* p = new DerivedClass<void>; 40 } 41 42 namespace rdar14183893 { 43 class Typ { // expected-note {{not complete}} 44 Typ x; // expected-error {{incomplete type}} 45 }; 46 47 template <unsigned C> class B : Typ {}; 48 typedef B<0> TFP; 49 50 class A { 51 TFP m_p; 52 void Enable() { 0, A(); } // expected-warning {{unused}} 53 }; 54 } 55