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.