Merge pull request #260 from hbruintjes/allow_const_shared

Allow std::enable_shared_from_this when using const element type
This commit is contained in:
Wenzel Jakob 2016-07-01 13:38:46 +02:00 committed by GitHub
commit d7e208c740

View File

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