Я вижу, что std::unique_ptr
имеет следующие способы инициализации:
std::unique_ptr<some_class> sc_ptr{ new some_class };
где кто-то может delete
выделенный some_class
из-под std::unique_ptr
.
и
some_class *scptr { new some_class }
std::unique_ptr<some_class> sc_ptr1{ scptr };
std::unique_ptr<some_class> sc_ptr2{ scptr };
Преодоление цели ' unique ' в std::unique_ptr
, а также приводит к UDB.
Теперь у меня возникает вопрос: почему Класс std::unique_ptr
даже разрешает указанные выше методы инициализации, пока в его распоряжении есть метод std::make_unique<some_class>()
?
Я что-то здесь упускаю?