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)