/* { dg-do compile } */ /* { dg-options "-w -O2 -fno-exceptions -std=c++11 -fpermissive" } */ namespace a { template struct d { static constexpr b e = c; }; template struct f : d {}; } typedef long g; template struct h { static const bool e = a::f::e; }; namespace a { template struct ah; template class ai; } class i { public: operator[](long) const {} }; template class am : public i {}; class an; class k : public am, h>>::e> {}; class l { public: aq(); }; class ar extern as; typedef k at; class m { virtual bool av(int, unsigned &, at &, int &, g &, bool); }; class ar { public: typedef m *aw(const &, int &, const &, const &); }; struct ax { static ay(ar::aw); }; template struct n { n(ar) { ax::ay(ba); } static m *ba(const &bb, int &bc, const &bd, const &be) { az(bb, bc, bd, be); } }; namespace { class G : m { unsigned bi(const at &, l &); bool av(int, unsigned &, at &, int &, g &, bool); public: G(const, int, const, const) {} }; } bool G::av(int, unsigned &, at &bl, int &, g &, bool) { l bo; bi(bl, bo); } o() { n bp(as); } namespace { enum { bq, br }; } unsigned G::bi(const at &bl, l &bo) { unsigned bs; for (char *j;; j += 2) switch (*j) { case bq: bl[bs]; case br: bo.aq(); } }