https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96926
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Known to fail| |10.2.1, 11.0, 9.3.1 Known to work| |8.3.0 Last reconfirmed| |2020-09-03 Ever confirmed|0 |1 CC| |jason at gcc dot gnu.org --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- template <typename> struct b; template <typename> struct __is_constructible_impl; template <bool> struct g; template <bool l, typename> using c = typename g<l>::d; template <int, typename... e> struct m { template <typename> static bool h() { return b<__is_constructible_impl<e>...>::i; } }; template <typename... ab> class o { template <bool l> using ad = m<l, ab...>; template <bool l, typename... j> using k = c<ad<l>::template h<j...>(), bool>; template <bool p = 0, k<p, ab...>> o(ab...); }; struct q { o<int> n; }; struct r { q f; r(); }; int main() { r a; } This is accepted by EDG, Clang and GCC 8. Rejected by GCC 9+ since r262172 (fixing PR c++/80290)