mirror of
https://github.com/pybind/pybind11.git
synced 2025-01-31 15:20:34 +00:00
Cast to derived holder using container type when using std::enable_shared_from_this.
Allows const types to be used by shared_ptr
This commit is contained in:
parent
3eeea6fa61
commit
70d2e57b09
@ -887,7 +887,7 @@ private:
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
static void init_holder_helper(instance_type *inst, const holder_type * /* unused */, const std::enable_shared_from_this<T> * /* dummy */) {
|
static void init_holder_helper(instance_type *inst, const holder_type * /* unused */, const std::enable_shared_from_this<T> * /* dummy */) {
|
||||||
try {
|
try {
|
||||||
new (&inst->holder) holder_type(std::static_pointer_cast<type>(inst->value->shared_from_this()));
|
new (&inst->holder) holder_type(std::static_pointer_cast<typename holder_type::element_type>(inst->value->shared_from_this()));
|
||||||
} catch (const std::bad_weak_ptr &) {
|
} catch (const std::bad_weak_ptr &) {
|
||||||
new (&inst->holder) holder_type(inst->value);
|
new (&inst->holder) holder_type(inst->value);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user