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

Richard Smith <richard-gccbugzilla at metafoo dot co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |richard-gccbugzilla@metafoo
                   |                            |.co.uk

--- Comment #6 from Richard Smith <richard-gccbugzilla at metafoo dot co.uk> ---
(In reply to Andrew Pinski from comment #5)
> (In reply to Christopher Di Bella from comment #3)
> > This is apparently a Clang bug: the RHS of `R42c` isn't evaluated because of
> > short-circuiting. Apologies for the noise and thanks for helping me work
> > through it.
> 
> No, clang and GCC disagree even on:
> ```
> template <class Ub> concept A42b = true;
> template <class Tc> concept R42c = A42b<Tc&>;
> 
> static_assert (R42c<void>);
> ```
> 
> There is no short-circuting here.

No substitution is performed into 'Tc&' here, because normalization of R42c
produces the atomic constraint 'true' with an empty parameter mapping. So the
type 'void&' is never formed.

Reply via email to