| ▲ | bluGill 2 hours ago | |||||||
For 95% of all code that is correct. std::make_* is easy to use and prevents a lot of mistakes, while having no loss of performance. That last 5% though you are doing weird things and so need to do something manually. (as the other poster said, make_unique is implemented with new) Of course the 5% is overall. Some projects never have anything that gets into that last 5%, while others it is more like 50% of the code can't use make_*. If at all possible your use of new/delete should be limited to a data structure/container than handles it, and not scatters all over. | ||||||||
| ▲ | RossBencina 2 hours ago | parent | next [-] | |||||||
"For 95% of all code that is correct. std::make_* is easy to use and prevents a lot of mistakes, while having no loss of performance." For 95% of code std::unique_ptr has no loss of performance. Perhaps. Just remember that it is not a zero-cost abstraction, the compiler won't always be able to entirely eliminate the overhead: | ||||||||
| ||||||||
| ▲ | smallstepforman 29 minutes ago | parent | prev [-] | |||||||
The unique_ptr destructor is called on scope exit, and there are times you want this earlier before other critical code. | ||||||||
| ||||||||