all: assorted cleanups
This commit is contained in:
+11
-1
@@ -345,7 +345,6 @@ using OwningPointer = T *;
|
||||
// also works: a trivial class with just a number of no-ops
|
||||
template <class T>
|
||||
struct OwningPointer final {
|
||||
static_assert(std::is_class_v<T>); // UPX convention
|
||||
typedef typename std::add_lvalue_reference<T>::type reference;
|
||||
typedef typename std::add_lvalue_reference<const T>::type const_reference;
|
||||
typedef typename std::add_pointer<T>::type pointer;
|
||||
@@ -384,6 +383,17 @@ inline void owner_delete(OwningPointer(T)(&object)) noexcept {
|
||||
assert_noexcept(object == nullptr);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
inline void owner_free(OwningPointer(T)(&object)) noexcept {
|
||||
static_assert(!std::is_class_v<T>); // UPX convention
|
||||
if (object != nullptr) {
|
||||
free((T *) object);
|
||||
object = nullptr;
|
||||
}
|
||||
assert_noexcept((T *) object == nullptr);
|
||||
assert_noexcept(object == nullptr);
|
||||
}
|
||||
|
||||
// disable some overloads
|
||||
#if defined(__clang__) || __GNUC__ != 7
|
||||
template <class T>
|
||||
|
||||
Reference in New Issue
Block a user