mirror of
https://github.com/pybind/pybind11.git
synced 2025-02-13 04:07:49 +00:00
Revert "One way to deal with the order dependency issue. This is not the best way, more like a proof of concept."
This reverts commit eb09c6c1b9
.
This commit is contained in:
parent
eec2d81d82
commit
9c7d2676c9
@ -726,30 +726,15 @@ public:
|
|||||||
// if we can find an exact match (or, for a simple C++ type, an inherited match); if
|
// if we can find an exact match (or, for a simple C++ type, an inherited match); if
|
||||||
// so, we can safely reinterpret_cast to the relevant pointer.
|
// so, we can safely reinterpret_cast to the relevant pointer.
|
||||||
if (bases.size() > 1) {
|
if (bases.size() > 1) {
|
||||||
type_info *best_base = nullptr;
|
|
||||||
if (no_cpp_mi) {
|
|
||||||
for (auto *base : bases) {
|
for (auto *base : bases) {
|
||||||
if (PyType_IsSubtype(base->type, typeinfo->type)) {
|
if (no_cpp_mi ? PyType_IsSubtype(base->type, typeinfo->type)
|
||||||
if (best_base == nullptr
|
: base->type == typeinfo->type) {
|
||||||
|| PyType_IsSubtype(base->type, best_base->type)) {
|
|
||||||
best_base = base;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
for (auto *base : bases) {
|
|
||||||
if (base->type == typeinfo->type) {
|
|
||||||
best_base = base;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (best_base != nullptr) {
|
|
||||||
this_.load_value(
|
this_.load_value(
|
||||||
reinterpret_cast<instance *>(src.ptr())->get_value_and_holder(best_base));
|
reinterpret_cast<instance *>(src.ptr())->get_value_and_holder(base));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Case 2c: C++ multiple inheritance is involved and we couldn't find an exact type
|
// Case 2c: C++ multiple inheritance is involved and we couldn't find an exact type
|
||||||
// match in the registered bases, above, so try implicit casting (needed for proper C++
|
// match in the registered bases, above, so try implicit casting (needed for proper C++
|
||||||
|
Loading…
Reference in New Issue
Block a user