// PR c++/84296 namespace b {} namespace c { using namespace b; } namespace b { template struct e { static const int f = d; }; } template struct g; template struct g : h::template ab {}; struct k { template struct m { typedef typename g::n o; }; }; template struct ac; struct r { typedef ac p; }; template struct s : k { template struct ab : q::template t::template ab {}; }; struct ad { typedef int u; }; template struct ae; template struct ah { typedef ae ai; typedef typename ai::template w::o n; }; struct x { template struct ab : ah {}; }; struct y { struct z { template struct t : x {}; }; struct aj : s {}; }; template struct ak { typedef y::aj al; typedef typename al::m::o o; }; struct am { enum { an }; }; template struct ao {}; template struct ap : af::aq {}; template <> struct ae { template struct w; template struct w { typedef typename as::p o; }; }; enum { a = b::e<0>::f }; template class au; template struct ac : ao { typedef c::e aq; }; template void ay(aw, i, ax) { // Not sure if this has been creduced from an initialization of a // variable to a block-scope extern function decl au::o>::f> > az2(); // { dg-warning "empty parentheses" } } void v() { ad a; void az1(); ay(az1, a, v); }