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

David Binderman <dcb314 at hotmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dcb314 at hotmail dot com

--- Comment #3 from David Binderman <dcb314 at hotmail dot com> ---

Reduced code is:

template <int a> struct c { static constexpr int d = a; };
template <bool, typename> struct e;
template <typename f> struct e<true, f> { typedef f g; };
template <typename f> f aa();
class h {
public:
  template <typename i, typename... j> void ab(i *, j...) { i(j()...); }
};
template <typename> using k = h;
template <typename> class l : public k<int> {};
template <typename> struct m;
template <typename f> struct m<l<f>> {
  using n = l<f>;
  using o = f *;
  template <typename i> using p = l<i>;
  template <typename i, typename... j> static void ab(n ac, i q, j...) {
    ac.ab(q, j()...);
  }
};
template <typename...> struct r;
struct s : m<l<r<float>>> {
  struct ad {
    typedef p<r<float>> ae;
  };
};
template <typename> struct af;
template <long, typename f> using ag = typename af<f>::g;
template <typename> class ah {};
template <typename ai, typename... u> struct af<ah<ai, u...>> { typedef ai g;
};
template <long aj, typename... v> ag<aj, ah<v...>> ak(ah<v...>);
class al {
public:
  template <typename w> void operator=(w);
};
struct am {
  struct an {
    s::o ao;
  };
  struct : s::ad::ae, an {
  } ap;
};
template <typename, typename = int> class x : am {
public:
  template <typename... j> s aq(j &&...);
};
template <typename f, typename ar>
template <typename... j>
s x<f, ar>::aq(j &&...) {
  s::ab(ap, ap.ao, aa<j>()...);
}
template <typename...> class as;
template <typename... at> struct r {
  int au;
  r(at...);
  template <typename av> void aw(av);
};
class y {
public:
  static constexpr struct {
    template <typename ax> typename e<c<false>::d, ax>::g ay();
    template <typename ax> static typename e<!c<false>::d, ax>::g ay();
  } az{};
};
template <int ba> struct z {
  static void bb() {
    ah<al> b;
    ak<ba>(b) = y::az.ay<int>;
  }
};
template <typename bc, typename bd> void be(bc, bd) { z<0>::bb; }
template <typename... at> r<at...>::r(at...) { aw(y::az); }
template <typename... at> template <typename av> void r<at...>::aw(av ac) {
  be(au, ac);
}
template <typename ax> class as<ax> {
public:
  as &bf();
  x<int> bg;
};
template <typename ax> as<ax> &as<ax>::bf() {
  ax t;
  bg.aq(t);
}
template <typename... at> as<at...> bh(at...);
auto bi = bh(1.0f).bf();

Reply via email to