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

songb432 at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #3 from songb432 at gmail dot com ---
(In reply to Jonathan Wakely from comment #2)
> It isn't shown because the more constrained one replaces it. There is only
> one copy constructor, decided by evaluating the constraints. The
> unconstrained one is not an "eligible special member function" in the
> terminology of the standard.
> 
> EDG and MSVC accept this too, but I don't understand why. GCC seems correct
> to me, the only eligible copy constructor is the private explicit one, and
> so that is chosen by overload resolution, but that's ill-formed because it's
> not accessible and is explicit.

That's fine. A crucial bug of Clang, EDG, and MSVC, I believe.
`explicit` doesn't change the overload resolution in any way. Access checking
doesn't, either.
Thanks for your explanation!

Reply via email to