https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70528
--- Comment #10 from Ville Voutilainen <ville.voutilainen at gmail dot com> --- (In reply to Jonathan Wakely from comment #8) > I don't know how to implement is_default_constructible without using that > decltype, or something similar that will cause the same problem. > > If we had a __is_constructible(_Tp, _Args...) builtin we could use that (for > is_constructible, and then define is_default_constructible in terms of that). It would be possible to push the use of the decltype into a separate trait, which sorta-kinda papers over the problem, but then we have an is_default_constructible that gives different results depending on where you use it for such a nested type (before or after it's been parsed completely), which is surely ill-formed NDR, and possibly an ODR violation as well. I can't fathom how a builtin would change that problem.