A quick survey of the LO code shows that this idiom is underutilized.
Agreed! Thanks for bringing this up, I've noticed this as well.
The use of make_shared (and family) to construct shared_ptr (and other) instances is highly encouraged because of its benefits over using new and smart-pointer ctor or reset.
Very true, make_shared should result in one heap alloc vs. new + the shared_ptr constructor which uses at least two. However, if make_shared is used and we're working with a single block, if we're also using weak_ptrs, if I'm correct the object will be destroyed once the last strong ref is deleted, but will not be deallocated until the last weak ref is deleted. I haven't seen many uses of weak_ptrs in LO, but if we have code using weak refs that could outlive all of the strong refs depending on your goals it could be better to stick with new + the shared_ptr constructor. Daniel
Attachment:
signature.asc
Description: Digital signature