2020-03-19 16:12:29 +08:00
|
|
|
// 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}}
|
2020-12-03 09:46:28 +08:00
|
|
|
|
|
|
|
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}}
|
|
|
|
}
|