// RUN: %clang_cc1 -fsyntax-only -verify %s template struct S { S() { } S(T t); }; template struct S; void f() { S s1; S s2(10); } namespace PR7184 { template void f() { typedef T type; void g(int array[sizeof(type)]); } template void f(); } namespace UsedAttr { template void __attribute__((used)) foo() { T *x = 1; // expected-error{{cannot initialize a variable of type 'int *' with an rvalue of type 'int'}} } void bar() { foo(); // expected-note{{instantiation of}} } } namespace PR9654 { typedef void ftype(int); template ftype f; void g() { f(0); } } namespace AliasTagDef { template T f() { using S = struct { // expected-warning {{C++11}} T g() { return T(); } }; return S().g(); } int n = f(); } namespace PR10273 { template void (f)(T t) {} void g() { (f)(17); } }