Почему меня это немного смущает:
std :: shared_ptr может быть пустым , а std :: shared_ptr может указывать на null, и эти две концепции не эквивалентны.
пустой shared_ptr может хранить ненулевое значение, а shared_ptr, который хранит null, может иметь положительный счетчик ссылок.
Теперь меня интересует, как правильно тестировать после std :: dynamic_pointer_cast был ли гипс удачным или нет? документы https://en.cppreference.com/w/cpp/memory/shared_ptr/pointer_cast состояние:
3-4) dynamic_cast<Y*>(r.get()) (If the result of the dynamic_cast is a null pointer value, the returned shared_ptr will be empty.)
, но поскольку empty shared_ptr не гарантирует сохранение нулевого значения, я не уверен, что это за надлежащий четко определенный тест на успешность приведения динамического c