1shared_ptr<T> p; ---> T * p; : nothing is const
2const shared_ptr<T> p; ---> T * const p; : p is const
3shared_ptr<const T> p; ---> const T * p; <=> T const * p; : *p is const
4const shared_ptr<const T> p; ---> const T * const p; <=> T const * const p; : p and *p are const.
5