http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59918

--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
A bit further reduced:

class NameValuePairs {
public:
  ~NameValuePairs();
  virtual bool m_fn1(const char *, const int &p2, void *) const;
};
class B : NameValuePairs {};
class F : virtual public B {};
class G : virtual B {};
class ASN1Object {
public:
  virtual ~ASN1Object();
};
class A {
public:
  NameValuePairs *GetValueHelperClass_searchFirst;
  A() { GetValueHelperClass_searchFirst->m_fn1(0, 0, 0); }
  void m_fn1();
};
template <class, class T> A GetValueHelper(T, int) { A(); }
template <class BASE> class C : ASN1Object, public BASE {};
template <class GP> class H : public C<F> {
  GP m_groupParameters;
};
template <class BASE> class D : BASE {};
template <class EC> class J : F {
  bool m_fn1(const char *, const int &p2, void *) const;
};
template class D<H<J<int> > >;
class I : C<G>, C<F> {};
template <class EC>
bool J<EC>::m_fn1(const char *, const int &p2, void *) const {
  GetValueHelper<F>(0, 0).m_fn1();
}

Reply via email to