| } | } | ||||
| 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) | ||||
| { | { |