https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91576

--- Comment #7 from David Binderman <dcb314 at hotmail dot com> ---
After much slow reduction, the reduced C++ source code seems
to be

class b;
struct c {
  using aj = b *;
};
struct d {
  using aj = c::aj;
};
struct f {
  using aj = d::aj;
};
template <class, class ao> f::aj ap(ao);
template <typename aq> class g {
public:
  aq begin();
  aq end();
};
class av {
public:
  virtual int *aw(unsigned long);
};
template <typename ax, int *(av::*ay)(ax)> struct h {
  long ba;
  av bb;
  void bc() { ba = long((&bb->*ay)(1)); }
};
using bd = h<unsigned long, &av::aw>;
class b {
  struct i {
    bd bf;
    void bg() { bf.bc(); }
  };

public:
  using bh = int *;
  using bi = g<bh>;
  i bj;
  bi bases() { bj.bg(); }
};
class j {
  virtual bool bl(const int *, unsigned, int, int, int);
};
class k : j {
  bool bl(const int *l, unsigned, int, int, int) {
    auto e = ap<b>(l);
    for (int a : e->bases())
      ;
  }
};
void bp() { k(); }

Reply via email to