|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
template<class RR = R, |
|
|
template<class RR = R, |
|
|
std::enable_if_t<( std::is_pointer<RR>::value && !std::is_void<std::remove_pointer_t<RR>>::value), int> = 0> |
|
|
|
|
|
|
|
|
std::enable_if_t<( std::is_pointer<RR>::value |
|
|
|
|
|
&& !std::is_void<std::remove_pointer_t<RR>>::value), int> = 0> |
|
|
std::add_lvalue_reference_t<std::remove_pointer_t<RR>> operator*() const noexcept |
|
|
std::add_lvalue_reference_t<std::remove_pointer_t<RR>> operator*() const noexcept |
|
|
{ |
|
|
{ |
|
|
return *get(); |
|
|
return *get(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<class RR = R, class DD = D, |
|
|
template<class RR = R, class DD = D, |
|
|
std::enable_if_t<(std::is_nothrow_move_assignable<RR>::value || std::is_nothrow_copy_assignable<RR>::value) |
|
|
|
|
|
&& (std::is_nothrow_copy_assignable<DD>::value || std::is_nothrow_copy_assignable<DD>::value), int> = 0 |
|
|
|
|
|
|
|
|
std::enable_if_t<(std::is_nothrow_move_assignable<RR>::value |
|
|
|
|
|
|| std::is_nothrow_copy_assignable<RR>::value) |
|
|
|
|
|
&& (std::is_nothrow_copy_assignable<DD>::value |
|
|
|
|
|
|| std::is_nothrow_copy_assignable<DD>::value), int> = 0 |
|
|
> |
|
|
> |
|
|
unique_resource& operator=(unique_resource&& other) |
|
|
unique_resource& operator=(unique_resource&& other) |
|
|
{ |
|
|
{ |