// RUN: %clang_cc1 -fsyntax-only -verify %s template struct X0 { struct MemberClass { T member; // expected-error{{with function type}} }; T* f0(T* ptr) { return ptr + 1; // expected-error{{pointer to the function}} } static T* static_member; }; template T* X0::static_member = ((T*)0) + 1; // expected-error{{pointer to the function}} template class X0; // okay template class X0; // expected-note 3{{requested here}} // Specialize everything, so that the explicit instantiation does not trigger // any diagnostics. template<> struct X0::MemberClass { }; typedef int int_long_func(long); template<> int_long_func *X0::f0(int_long_func *) { return 0; } template<> int_long_func *X0::static_member; template class X0;