https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61671
--- Comment #2 from Dmitry G. Dyachenko <dimhen at gmail dot com> --- class A { public: virtual int GetNilString(); }; class B { public: B(A *p1) { p1->GetNilString(); } }; template <class StringTraits> class F : B { public: F(int) : B(StringTraits::GetDefaultManager()) {} }; class CDefaultStrMgr { public: A *GetMgr() { return &m_strmgr; } A m_strmgr; } a; class C { public: static A *GetDefaultManager() { return a.GetMgr(); } }; class D { public: D() : m_sPubKeyAlgOID(0) {} F<C> m_sPubKeyAlgOID; }; void fn1() { D(); }