[ox/std] Add Deleter parameter to UniquePtr
This commit is contained in:
parent
46ea85fa7d
commit
a5bb1eeed0
11
deps/ox/src/ox/std/memory.hpp
vendored
11
deps/ox/src/ox/std/memory.hpp
vendored
@ -13,6 +13,13 @@
|
|||||||
namespace ox {
|
namespace ox {
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
struct DefaultDelete {
|
||||||
|
constexpr void operator()(T *p) noexcept {
|
||||||
|
delete p;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T, typename Deleter = DefaultDelete<T>>
|
||||||
class UniquePtr {
|
class UniquePtr {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -30,7 +37,7 @@ class UniquePtr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
~UniquePtr() {
|
~UniquePtr() {
|
||||||
delete m_t;
|
DefaultDelete<T>()(m_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr T *release() noexcept {
|
constexpr T *release() noexcept {
|
||||||
@ -49,7 +56,7 @@ class UniquePtr {
|
|||||||
auto t = m_t;
|
auto t = m_t;
|
||||||
m_t = other.m_t;
|
m_t = other.m_t;
|
||||||
other.m_t = nullptr;
|
other.m_t = nullptr;
|
||||||
delete t;
|
DefaultDelete<T>()(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename U>
|
template<typename U>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user