C++11 introduced a new way to cast shared_ptr as shown below.

std::dynamic_pointer_cast\
std::static_pointer_cast\
std::const_pointer_cast