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.