@@ -149,6 +149,16 @@ namespace sr | |||
return m_resource; | |||
} | |||
template<class RR = R, | |||
std::enable_if_t<std::is_pointer<RR>::value && std::is_nothrow_copy_constructible<RR>::value | |||
&& ( std::is_class<std::remove_pointer_t<RR>>::value | |||
|| std::is_union<std::remove_pointer_t<RR>>::value ), int> = 0 | |||
> | |||
RR operator->() const noexcept | |||
{ | |||
return m_resource; | |||
} | |||
const D& get_deleter() const noexcept | |||
{ | |||
return m_deleter; |
@@ -222,6 +222,13 @@ TEST_CASE("get returns resource", "[UniqueResource]") | |||
CHECK(guard.get() == 3); | |||
} | |||
TEST_CASE("pointer access resturns resource" "[UniqueResource]") | |||
{ | |||
const auto p = std::make_pair(3, 4); | |||
auto guard = sr::make_unique_resource(&p, [](auto*) { }); | |||
REQUIRE(guard->first == 3); | |||
REQUIRE(guard->second == 4); | |||
} | |||
// TODO: Pointer access functions | |||
TEST_CASE("deleter access", "[UniqueResource]") |