https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96645

Eyal Rozenberg <eyalroz1 at gmx dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |eyalroz1 at gmx dot com

--- Comment #12 from Eyal Rozenberg <eyalroz1 at gmx dot com> ---
(In reply to Jason Merrill from comment #8)
> We cannot correctly resolve is_nothrow_constructible<A> until we've parsed
> the DMI.  Given that, we have three options:
> 
> 1) Conservatively say no.
> 2) Optimistically guess yes.
> 3) Non-SFINAE error.
>
> ("We" in this sentence is the C++ standard.)

But in this page, "we" is the compiler. IIUC, the standard does not allow for
determing is_nothrow_constructible<A>. Am I correct? If that really is the
case, shouldn't the compiler emit an error saying that?

Alternatively, when not following the standard strictly, why should it not be
option (4.): Ignore the official restriction on determining (nothrow)
constructibility, make a best-effort attempt to determine it anyway ( which in
this example should succeed), and report failure otherwise.

?

> PR81359 changed our behavior from 3 to 1.

I searched that bug page for the rationale, and couldn't quite get it.

Reply via email to