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