http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60345
--- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- markus@x4 src % cat test.ii template <typename T> struct A { operator T &(); }; class C {}; class J : public C {}; template <typename K> struct F { void m_fn1(const K &); }; template <typename AtomThingMapPtrT> struct D : AtomThingMapPtrT {}; struct B { F<C *> *operator->(); }; struct G { enum Kind {}; }; struct H { typedef G *Node; }; template <typename> struct I { bool m_fn1(int &, A<J *>, H::Node, G::Kind); D<B> lexdeps; }; template <> bool I<int>::m_fn1(int &, A<J *> p2, G *, G::Kind) { lexdeps->m_fn1(p2); }