mirror of
https://github.com/RYDE-WORK/pybind11.git
synced 2026-01-19 21:23:26 +08:00
In def_readonly and def_readwrite, there is an assertion that the member comes
from the class or a base class:
static_assert(std::is_base_of<C, type>::value, "...");
However, if C and type are the same type, is_base_of will still only be true
if they are the same _non-union_ type. This means we can't define accessors
for the members of a union type because of this assertion.
Update the assertion to test
std::is_same<C, type>::value || std::is_base_of<C, type>::value
which will allow union types, or members of base classes.
Also add a basic unit test for accessing unions.
9 lines
148 B
Python
9 lines
148 B
Python
from pybind11_tests import union_ as m
|
|
|
|
|
|
def test_union():
|
|
instance = m.TestUnion()
|
|
|
|
instance.as_uint = 10
|
|
assert instance.as_int == 10
|