In the constructor definitions below,
enables
shared_from_this with
p,
for a pointer
p of type
Y*,
means that if
Y has an unambiguous and accessible base class
that is a specialization of
enable_shared_from_this (
[util.smartptr.enab]),
then
remove_cv_t<Y>* shall be implicitly convertible to
T* and
the constructor evaluates the statement:
if (p != nullptr && p->weak_this.expired())
p->weak_this = shared_ptr<remove_cv_t<Y>>(*this, const_cast<remove_cv_t<Y>*>(p));