Это нормально, но я бы использовал оператор shared_ptr::get()
, чтобы быть более очевидным в том, что мы не используем необработанный указатель.
void foo()
{
std::shared_ptr<std::string> sharedPtr = std::make_shared<std::string>();
bar(*sharedPtr.get());
}