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

--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
namespace b {
typedef long unsigned c;
}
void *operator new(b::c, void *) noexcept;
namespace b {
template < typename d > d *e(d &) noexcept;
template < typename d, d f > struct g { static constexpr d h = f; };
typedef g< bool, false > i;
template < bool, typename, typename > struct aa;
template < typename... > struct j;
template < typename k, typename l > struct j< k, l > : aa< 1, k, l > {};
template < typename... > struct ab;
template < typename k, typename l > struct ab< k, l > : aa< k::h, l, k >::ac
{};
template < typename ad > struct m : g< bool, !ad::h > {};
struct ae : i {};
template < typename d > struct n : j< ae, d >::ac {};
struct t {
  template < typename > static g< bool, true > ag(int);
};
template < typename d > struct ah : t { typedef decltype(ag< d >(0)) ac; };
struct aj : ah< int >::ac {};
struct u {
  template < typename, typename > static g< bool, true > ag(int);
};
template < typename d, typename o > struct w : u {
  typedef decltype(ag< d, o >(0)) ac;
};
template < typename o > struct p : ab< aj, w< int, o > > {};
template < typename d, typename > struct q : aa< n< d >::h, int, p< int > > {};
template < typename o > struct r : q< int, o >::ac {};
template < typename... > struct ak;
template < typename d, typename o > struct ak< d, o > : r< o > {};
template < typename, typename... al > struct am : ak< int, al... >::ac {};
template < typename d > struct ao : g< bool, noexcept(d()) > {};
template < typename, typename... al >
struct ap : ab< am< int, al... >, ao< al... > > {};
template < typename d > struct aq : ap< d, d > {};
template < typename d > struct ar : aq< d > {};
template < bool, typename at, typename > struct aa { typedef at ac; };
template < typename at, typename au > struct aa< false, at, au > {
  typedef au ac;
};
template < typename av > struct aw { using ac = av; };
template < typename av, template < typename > class > using ay = aw< av >;
template < typename av, template < typename > class ax >
using az = typename ay< av, ax >::ac;
template < typename d > d ba(d &bb) { return static_cast< d && >(bb); }
template < typename d > d bc(d);
struct bd : ab< m< ar< int > >, int > {};
template < typename > struct be;
template < typename d > struct be< d * > { typedef d bg; };
template < typename bi > class bj {
  bi bk;

public:
  typedef typename be< bi >::bg &&bg;
  bj(bi) : bk() {}
  bg operator*() { return bg(*bk); }
  void operator++() { ++bk; }
};
template < typename bi, typename bo = typename aa< bd::h, bi, bj< bi > >::ac >
bo __make_move_if_noexcept_iterator(bi bp) {
  return bp;
}
template < typename d > class allocator {
  long bq;
  typedef d bf;
  template < typename > struct br { typedef allocator bs; };
};
struct bt {
  template < typename d > struct bu {
    using ac = typename d::template br< int >::bs;
  };
  template < typename d > using bv = typename d::bw;
};
template < typename bx, typename > using by = typename bt::bu< bx >::ac;
template < typename bx > struct bz : bt {
  using bw = az< typename bx::bf *, bv >;
  template < typename d > using ca = by< bx, d >;
};
}
template < typename bx > struct cb : b::bz< bx > {
  template < typename > struct br {
    typedef typename b::bz< bx >::template ca< int > bs;
  };
};
namespace b {
template < typename > class Trans_NS_d_cc {
public:
  typedef long bq;
  struct cg : cb< allocator< char > >::br< int >::bs {
    cg(cb< br< int >::bs >::bw, allocator);
    cb< br< int >::bs >::bw ch;
  } ci;
  void ck(bq);
  cb< cb< allocator< char > >::br< int >::bs >::bw cj() { return ci.ch; }
  cb< cb< allocator< char > >::br< int >::bs >::bw cl();
  bool cm() { return cj(); }
  cb< allocator< char > >::br< int >::bs cn();
  Trans_NS_d_cc(Trans_NS_d_cc &&co) noexcept : ci(cl(), bc(cn())) {
    if (co.cm())
      ck(length());
  }
  bq length();
};
template < typename cp, typename... al > void cq(cp *cr, al &&... cs) {
  new (cr) cp(ba(cs)...);
}
struct ct {
  template < typename cu, typename cv > static cv cw(cu cx, cv) {
    cv cy;
    try {
      for (;; ++cx)
        cq(e(*cy), *cx);
    } catch (...) {
    }
    return cy;
  }
};
template < typename cu, typename cv > void cz(cu cx, cv db) { ct::cw(cx, db); }
template < typename cu, typename cv, typename d >
void dc(cu cx, cu , cv db, d) {
  cz(cx, db);
}
template < typename > struct dd {
  typedef allocator< Trans_NS_d_cc< char > > de;
  typedef cb< de >::bw bw;
  struct {
    bw df;
    bw dg;
  } di;
};
template < typename > class dj : dd< allocator< char > > {
public:
  void dl();
  template < typename cv > void dm(c, cv cx, cv da) {
    bw db;
    try {
      dc(cx, da, db, 0);
    } catch (...) {
    }
  }
};
c dl_dn;
template < typename d > void dj< d >::dl() {
  dm(dl_dn, __make_move_if_noexcept_iterator(di.df),
     __make_move_if_noexcept_iterator(di.dg));
}
}
void a() {
  b::dj< int > s;
  s.dl();
}

Reply via email to