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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=126120
           Keywords|                            |rejects-valid

--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #0)
> Similarly for the constructors taking a deleter:
> 
> 
> template<class Y, class D> shared_ptr(Y* p, D d);
> template<class Y, class D, class A> shared_ptr(Y* p, D d, A a);
> template<class D> shared_ptr(nullptr_t p, D d);
> template<class D, class A> shared_ptr(nullptr_t p, D d, A a);
> 
> Constraints: is_move_constructible_v<D> is true, and d(p) is a well-formed
> expression. [...]
> 
> We check that with a static assert in the constructor body, which is too
> late, so this fails:
> 
> struct D { };
> static_assert( ! std::is_constructible_v<std::shared_ptr<A>, A*, D> );

That part was reported again as Bug 126120 and fixed by
r17-4556-ge4f550457b0b5c

Reply via email to