Информация об изменениях

Сообщение другой Вопрос по стандартному unique_ptr от 18.07.2023 11:22

Изменено 18.07.2023 11:22 Sm0ke

Re: Вопрос по стандартному unique_ptr
У меня другой вопрос по unique_ptr

Если взять в него завернуть некий some_type
А сам умный указатель положить в map
То при v_map.try_emplace(v_key, std::make_unique<some_type>() ); Будет создан экземляр, даже если в мапе есть запись с тем-же ключом.
Т.е будет создан и разрушен лишний раз unique_ptr со своим динамическим экземпляром some_type

Вот если бы у unique_ptr был конструктор по принципу std::in_place_type, то этого оверхеда можно было избежать!

using my_ptr = std::unique_ptr<some_type>;
using my_map = std::map<bool, my_ptr>;

my_map v_map;
v_map.try_emplace(true, std::in_place_type<some_type>); // Жалко, что так нельзя!
v_map.try_emplace(true, std::make_unique<some_type>() ); // Так можно, но увы лишнее создание объектов может произойти!
другой Вопрос по стандартному unique_ptr
У меня другой вопрос по unique_ptr

Если взять в него завернуть некий some_type
А сам умный указатель положить в map
То при v_map.try_emplace(v_key, std::make_unique<some_type>() ); Будет создан экземляр, даже если в мапе есть запись с тем-же ключом.
Т.е будет создан и разрушен лишний раз unique_ptr со своим динамическим экземпляром some_type

Вот если бы у unique_ptr был конструктор по принципу std::in_place_type, то этого оверхеда можно было избежать!

using my_ptr = std::unique_ptr<some_type>;
using my_map = std::map<bool, my_ptr>;

my_map v_map;
v_map.try_emplace(true, std::in_place_type<some_type>); // Жалко, что так нельзя!
v_map.try_emplace(true, std::make_unique<some_type>() ); // Так можно, но увы лишнее создание объектов может произойти!