|
@ -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); |
|
|
} |
|
|
} |
|
|