|  | // 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}} | 
|  | } |