| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| |
| // There should be no extra errors about missing 'template' keywords. |
| struct B { |
| template <typename T> |
| int f(){}; |
| } builder; // expected-note 2{{'builder' declared here}} |
| |
| auto a = bilder.f<int>(); // expected-error{{undeclared identifier 'bilder'; did you mean}} |
| auto b = (*(&bilder+0)).f<int>(); // expected-error{{undeclared identifier 'bilder'; did you mean}} |
| |
| struct X { |
| struct type {}; |
| }; |
| |
| namespace PR48339 { |
| struct S { |
| template <typename T> static void g(typename T::type) {} // expected-note {{couldn't infer template argument 'T'}} |
| template <typename T> void f() { g(typename T::type{}); } // expected-error {{no matching function for call to 'g'}} |
| }; |
| |
| void f() { S{}.f<X>(); } // expected-note {{in instantiation of}} |
| } |