https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91576
--- Comment #11 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to David Binderman from comment #7)
> 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(); }
This is dup of PR92201 which is fixed now.