19.11.3.1 [util.smartptr.shared.const] includes several "Exception safety"
elements, but that is not one of the elements defined in 17.5.1.4
15.4.1.4 [structure.specifications]. We should either define what it means, or
just move those sentences into the Effects: clause.

-9- Effects: Constructs a shared_ptr object that owns the object p and the deleter d.
The second and fourth constructors shall use a copy of a to allocate memory for internal use. If an exception
is thrown, d(p) is called.

[…]

-12- Exception safety: If an exception is thrown, d(p) is called.

[…]

template <class Y> explicit shared_ptr(const weak_ptr<Y>& r);

[…]

-24- Effects: Constructs a shared_ptr object that shares ownership with r and stores a copy of the pointer
stored in r. If an exception is thrown, the constructor has no effect.

[…]

-27- Exception safety: If an exception is thrown, the constructor has no effect.

template <class Y, class D> shared_ptr(unique_ptr<Y, D>&& r);

[…]

-29- Effects: Equivalent to shared_ptr(r.release(), r.get_deleter()) when D is not a reference type,
otherwise shared_ptr(r.release(), ref(r.get_deleter())). If an exception is thrown, the constructor has no effect.

-30- Exception safety: If an exception is thrown, the constructor has no effect.