I (ошибочно) было следующее задание в моей программе:Назначение make_unique <X> к shared_ptr <X>
std::shared_ptr<SI::Program> m_program; // in class
m_program = std::make_unique<SI::Program>(); // in method
Когда я нашел это, я первым задавался вопросом, почему это даже компилирует. Оказывается, shared_ptr
имеет специальный оператор назначения перемещения для объектов unique_ptr
.
Мой вопрос в том, что это всегда безопасно, или это имеет какие-либо последствия?
(Safe, как и для выполнения кода, это, очевидно, не безопасно для проверки кода ...)
Одной из причин этого может быть использование специализированной специализации 'unique_ptr', которой' shared_ptr' не хватает. [Это * * создает проблему безопасности.] (Http://stackoverflow.com/questions/32483375/shared-ptr-from-unique-ptr-to-an-array) – jaggedSpire