// RUN: %clang_cc1 -verify %s template void f0() { struct X; typedef struct Y { T (X::* f1())(int) { return 0; } } Y2; Y2 y = Y(); } template void f0(); // PR5764 namespace PR5764 { struct X { template void Bar() { typedef T ValueType; struct Y { Y() { V = ValueType(); } ValueType V; }; Y y; } }; void test(X x) { x.Bar(); } } // Instantiation of local classes with virtual functions. namespace local_class_with_virtual_functions { template struct X { }; template struct Y { }; template void f() { struct Z : public X*> { virtual void g(Y* y) { } void g2(int x) {(void)x;} }; Z z; (void)z; } struct S { }; void test() { f(); } } namespace PR8801 { template void foo() { class X; typedef int (X::*pmf_type)(); class X : public T { }; pmf_type pmf = &T::foo; } struct Y { int foo(); }; template void foo(); }