Tem std::make_unique
algum benefício em eficiência como std::make_shared
?
Comparado à construção manual std::unique_ptr
:
std::make_unique<int>(1); // vs
std::unique_ptr<int>(new int(1));
make_shared
pode alocar o espaço para o objeto e o espaço para o bloco de controle juntos em uma única alocação. O custo disso é que o objeto não pode ser desalocado separadamente do bloco de controle; portanto, se você usa weak_ptr
muito, pode acabar usando mais memória.
make_shared
alguma eficiência em escrever apenas o código da mão longa?