Remove the intrusive_ptr
and replace it with std::shared_ptr
.
#740
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Remove the
intrusive_ptr
and replace it withstd::shared_ptr
.Prior to this change, we manage the cleanup of some resources where many structures may point to them and it is unclear the order in which they may go out of scope with a new
intrusive_ptr
, a refcounted pointer that we rolled ourselves. This change moves us to instead use the standard C++std::shared_ptr
.std::shared_ptr
is less preferred in the style guide tostd::unique_ptr
. However, this is because of the shared ownership responsibility, and the style guide prefers each object to have one owner when possible. In the case that an object truly must have shared ownership,std::shared_ptr
is recommended.This change significantly reduces the amount of custom code we have to maintain. Not only that, the eliminated code manages a relatively tricky lifetime/owernship aspect.