def_readwrite/readonly: bind using class type, not inferred type #911
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.
Current
def_readwrite
/def_readonly
create getter/setter lambdas thattake the inferred type
C
as the first argument, but this is a problemif the member is actually a base class member (e.g.
because this ends up creating a setter/getter that aren't callable with
a derived instance when
Base
isn't registered: it invariably producesan invalid argument failure when attempting to access the property due
to the
D
instance/B
argument mismatch.This commit changes the generated lambdas to use the
type
(as given inclass_<type>
) rather than the inferredC
for the lambdas, and adds astatic_assert failure for an attempt to call it with a member that isn't
part of
type
(or a base class).Fixes #910