https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90003
--- Comment #3 from Jakub Jelinek ---
Slightly reduced -std=c++2a -fconcepts:
namespace a {
template struct b;
template using aa = c;
template bool ab;
struct ac;
template using ad = ac;
template class ae { ae(c); };
}
namespace af {
namespace ag { struct ah { typedef int ai; }; }
template
struct d { typedef ag::ah e; };
namespace ag {
template class aj>
struct al { template struct am { typedef aj e; }; };
template class ak> struct an { typedef al ai; };
template class ak> struct ao { typedef an e; };
template struct aq;
template
struct aq> { typedef d::e
e; };
template class F { static bool cb() { typedef
typename bz::template am::e cc; new cc; } };
template class, typename cd, typename d> class ce {
static bool cb() { F::cb; } };
}
}
template concept cf = a::b::g;
struct {
template struct ch;
template using cj = ch>;
template auto operator()(ci &&) noexcept(cj()) {}
} begin;
template bool ck = requires(ap t) { begin(t); };
template bool cl = ck;
namespace a::cg {
template bool cn = cl;
template bool cm = cn;
}
template concept dc = requires(t co) { co; };
template concept cr = a::ab<>;
template class K { template > cq c(); };
namespace cs {
template bool u = a::cg::cm>;
template bool cu = u;
}
template requires cs::cu> void y(w, x);
namespace cv::alignment::cw::cx::affine::cy { auto z = [] {}; auto cz = [] {};
auto da = [] {}; auto db = [] {}; }
using namespace cv::alignment::cw;
template struct dg;
template class dd;
using de = af::d, dg,
dg, dg>;
namespace df { template class H { virtual void dh(); }; }
template void df::H::dh() { auto cw = this; auto dj = int{},
dk = cw; y(dk, dj); }
namespace df { typedef af::ag::ao::e dl; }
bool dm = af::ag::ce::e>::cb;