Browse Source

Member name of unique_resource updated (#143).

main
offa 6 years ago
parent
commit
72ecc0b65a
1 changed files with 8 additions and 8 deletions
  1. +8
    -8
      include/unique_resource.h

+ 8
- 8
include/unique_resource.h View File

&& (std::is_nothrow_constructible_v<D, DD> || std::is_nothrow_constructible_v<D, DD&>)) && (std::is_nothrow_constructible_v<D, DD> || std::is_nothrow_constructible_v<D, DD&>))
: resource(detail::forward_if_nothrow_constructible<R, RR>(std::forward<RR>(r)), scope_exit{[&r, &d] { d(r); }}), : resource(detail::forward_if_nothrow_constructible<R, RR>(std::forward<RR>(r)), scope_exit{[&r, &d] { d(r); }}),
deleter(detail::forward_if_nothrow_constructible<D, DD>(std::forward<DD>(d)), scope_exit{[this, &d] { d(get()); }}), deleter(detail::forward_if_nothrow_constructible<D, DD>(std::forward<DD>(d)), scope_exit{[this, &d] { d(get()); }}),
execute_on_destruction(true)
execute_on_reset(true)
{ {
} }


deleter(std::move_if_noexcept(other.deleter.get()), scope_exit{[&other] { deleter(std::move_if_noexcept(other.deleter.get()), scope_exit{[&other] {
other.get_deleter()(other.resource.get()); other.get_deleter()(other.resource.get());
other.release(); }}), other.release(); }}),
execute_on_destruction(std::exchange(other.execute_on_destruction, false))
execute_on_reset(std::exchange(other.execute_on_reset, false))
{ {
} }




void reset() noexcept void reset() noexcept
{ {
if( execute_on_destruction == true )
if( execute_on_reset == true )
{ {
execute_on_destruction = false;
execute_on_reset = false;
get_deleter()(resource.get()); get_deleter()(resource.get());
} }
} }
resource.reset(std::as_const(r)); resource.reset(std::as_const(r));
} }


execute_on_destruction = true;
execute_on_reset = true;
se.release(); se.release();
} }


void release() noexcept void release() noexcept
{ {
execute_on_destruction = false;
execute_on_reset = false;
} }


const R& get() const noexcept const R& get() const noexcept
} }
} }


execute_on_destruction = std::exchange(other.execute_on_destruction, false);
execute_on_reset = std::exchange(other.execute_on_reset, false);
} }
return *this; return *this;
} }


detail::Wrapper<R> resource; detail::Wrapper<R> resource;
detail::Wrapper<D> deleter; detail::Wrapper<D> deleter;
bool execute_on_destruction;
bool execute_on_reset;
}; };





Loading…
Cancel
Save