diff options
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateField.h | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/src/server/game/Entities/Object/Updates/UpdateField.h b/src/server/game/Entities/Object/Updates/UpdateField.h index 98810762304..bdfd7cc2095 100644 --- a/src/server/game/Entities/Object/Updates/UpdateField.h +++ b/src/server/game/Entities/Object/Updates/UpdateField.h @@ -22,6 +22,7 @@ #include "Optional.h" #include "UpdateMask.h" #include <algorithm> +#include <memory> #include <vector> class ByteBuffer; @@ -898,7 +899,7 @@ namespace UF public: using value_type = T; using IsLarge = std::integral_constant<bool, sizeof(void*) * 3 < sizeof(T)>; - using StorageType = std::conditional_t<IsLarge::value, std::add_pointer_t<T>, Optional<T>>; + using StorageType = std::conditional_t<IsLarge::value, std::unique_ptr<T>, Optional<T>>; ~OptionalUpdateFieldBase() { @@ -936,25 +937,14 @@ namespace UF void ConstructValue(std::true_type) { - _value = new T(); + _value = std::make_unique<T>(); } void DestroyValue() { - DestroyValue(IsLarge{}); - } - - void DestroyValue(std::false_type) - { _value.reset(); } - void DestroyValue(std::true_type) - { - delete _value; - _value = nullptr; - } - StorageType _value = { }; }; |