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));