Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/pr81194.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do compile { target c++17 } } // { dg-options "-O2 -fno-exceptions" } // { dg-additional-options "-Wno-return-type" } template <class a> struct b { typedef a *c; }; class e {}; template <typename a> class d { public: typedef typename b<a>::c c; c begin(); c end(); }; struct f { enum { g } h; }; struct i { d<f *> j(); }; struct l { d<i *> k(); }; class ac; class o { public: o(int *, int *, int *, ac *); }; class ac { public: ac(e); virtual o *ae(int *, int *, int *, int *); }; class p { void af(f *m) { switch (m->h) case f::g: ag(); } public: void n() { l ah; for (i *ai : ah.k()) for (f *m : ai->j()) af(m); } virtual void ag() { __builtin_unreachable(); } }; template <typename = int> class an : o { public: an(int *, int *, int *, int *, ac *); }; class q : ac { public: q() : ac([]() -> e {}()) {} o *ae(int *ap, int *aq, int *ar, int *as) { an(ap, aq, ar, as, this); } }; template <typename at> an<at>::an(int *, int *aq, int *ar, int *as, ac *au) : o(aq, ar, as, au) { p().n(); } void av() { new q; }