Fix py::cast(std::shared_ptr<T>) for shared_ptr-compatible custom holders#6066
Draft
virtuald wants to merge 8 commits into
Draft
Fix py::cast(std::shared_ptr<T>) for shared_ptr-compatible custom holders#6066virtuald wants to merge 8 commits into
virtuald wants to merge 8 commits into
Conversation
Add internal callback plumbing so class_ registrations can expose when a custom holder is constructible from std::shared_ptr<T>. When py::cast() sees a returned std::shared_ptr for such a bound type, it now creates the Python instance by reconstructing the bound holder from an erased aliasing shared_ptr instead of rejecting the conversion. This preserves the pybind#6008 safety check for incompatible holders while restoring support for private-destructor/shared_ptr patterns that use a custom holder wrapper.
3 tasks
Collaborator
|
Hi @virtuald, I have a few more commits under my 6067, from a full Cursor-assisted review. I'm just now running a final Cursor self-review before I push it out. Should be only a few minutes I hope. I'll push to 6067, so you can see everything. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description
Also fixes #6064. This one is more reasonable, requires an ABI bump (but that was already done on master so it should be fine?).
... looking through this, I'm pretty sure it can be simplified, but that's a problem for another time.
Suggested changelog entry: