Lines Matching full:template
4 template <class T>
11 template <class T>
21 template class B<int>; // expected-note {{requested here}}
22 template class B<char>; // expected-note {{requested here}}
31 template<class T> void f(T) {
36 template void A2::f(int);
38 template<class T0>
40 template<class T1> void f(T1) {
44 template void A3<int>::f(int);
46 template<class T0>
52 template class A4<int>;
57 template<class T> class A {
63 template<class T>
67 var = 3; // expected-warning {{use of undeclared identifier 'var'; unqualified lookup into dependent bases of class template 'B' is a Microsoft extension}}
71 template class B<int>;
79 template <class T>
87 template <class T>
95 template class B<int>; // expected-note {{requested here}}
103 template<class T>
110 template<class T>
129 template <class T>
135 template <class T>
159 template <class T>
163 m_hWnd = 1; // expected-warning {{use of undeclared identifier 'm_hWnd'; unqualified lookup into dependent bases of class template 'A' is a Microsoft extension}}
167 template class A<C>;
176 template <class T>
183 template <class T>
186 template <typename S>
195 text_provider2 = text_provider; // expected-note {{in instantiation of function template specialization}}
206 template <typename T> struct B : T {
218 template <typename T> struct C : T {
224 // expected-warning {{unqualified lookup into dependent bases of class template 'C'}}
227 template struct B<A>;
228 template struct C<A>; // expected-note-re 1+ {{in instantiation of member function 'PR16014::C<PR16014::A>::{{.*}}' requested here}}
230 template <typename T> struct D : T {
239 template struct D<A>;
244 template <class T>
254 // expected-warning {{unqualified lookup into dependent bases of class template 'A'}}
260 template struct A<C>; // No error! B is a base of A<C>, and qux is available.
263 template struct A<D>; // expected-note {{in instantiation of member function 'PR19233::A<PR19233::D>::baz' requested here}}
268 template <typename T> struct Base { int y = 42; };
269 template <typename T> struct Derived : Base<T> {
278 template struct Derived<int>;
282 template <typename T> struct A { typedef T NameFromBase; };
283 template <typename T> struct B : A<T> {
290 template <typename T> struct A { struct NameFromBase {}; };
291 template <typename T> struct B : A<T> {
298 template <typename T> struct A { enum NameFromBase { X }; };
299 template <typename T> struct B : A<T> {
306 template <typename T> struct A { typedef T NameFromBase; }; // expected-note {{member found by ambiguous name lookup}}
307 template <typename T> struct B { struct NameFromBase { T m; }; }; // expected-note {{member found by ambiguous name lookup}}
308 template <typename T> struct C : A<T>, B<T> {
311 static_assert(sizeof(C<int>) != 0, ""); // expected-note {{in instantiation of template class 'two_types_in_base::C<int>' requested here}}
315 template <typename T> struct A { typedef T NameFromBase; };
316 template <typename T> struct B { static const T NameFromBase = 42; };
317 template <typename T> struct C : A<T>, B<T> {
323 template <typename T> struct A { struct NameFromBase {}; };
324 template <typename T> struct B : A<T> {
330 // MSVC does not do lookup of non-type declarations from dependent template base
332 template <typename T> struct A { void NameFromBase() {} };
333 template <void (*F)()> struct B { };
334 template <typename T> struct C : A<T> {
341 template <typename T> struct A {
342 template <typename U> struct NameFromBase { U x; };
344 template <typename T> struct B : A<T> {
346 typename B::template NameFromBase<T> m;
348 template <typename T> struct C : A<T> {
356 template <typename T>
360 template <typename T>
365 template <typename T>
367 template <typename U> struct B { typedef U InnerType; };
369 template <typename T>
370 struct C : A<T>::template B<T> {
376 template <typename T>
380 template <typename T>
387 template <typename T>
389 template <typename T>
394 template <typename T>
396 template<typename T>
398 template <typename T>
405 template<typename T>
407 template <typename T>
412 template <typename T>
414 template <typename T>
416 template <typename T>
422 template <typename T>
424 template <typename T>
426 template <typename T>
428 C<int> c; // expected-note {{in instantiation of template class 'type_in_base_of_multiple_dependent_bases::C<int>' requested here}}
432 template<typename T> struct A { typedef int NameFromBase; };
433 template<typename T> struct B : A<T> {
435 template<typename TT>
443 template<typename T> struct B<T>::C : B {
446 template<typename T> struct F : B<T>::C {
452 template <typename T> struct A { typedef T NameFromBase; };
453 template <typename T>
498 template struct B<int>;
503 template <int N> int f() { return N; }
504 template <typename T> int f() { return sizeof(T); }
507 template <typename T>
509 template <typename T>
516 template <typename T> struct C { enum { NameFromBase = 4 }; };
517 template <typename T> struct D : C<T> {
524 template<class T>
532 template <template <typename T> class A>
538 template <typename T>
541 template <typename T>
544 template <typename T>
556 template <typename T> struct Template : T {
562 Template<Base> x;
569 template <typename T> decltype(g(T())) check(); // expected-note{{candidate template ignored: substitution failure [with T = int]: use of undeclared identifier 'g'}}
573 template <typename T> decltype(h(T())) check2(); // expected-note{{candidate template ignored: substitution failure [with T = int]: no matching function for call to 'h'}}