diff options
author | Shauren <shauren.trinity@gmail.com> | 2020-11-21 12:21:44 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2020-12-08 18:16:47 +0100 |
commit | 426cb31676338cf6e5411d38f645f98a7e6ccb91 (patch) | |
tree | d3f552a41168e0fe36aec0f60f0daff2a0a6ffcf /src/server/game | |
parent | 4ce6df1d2517959f39f32205cedc354ab0cbad73 (diff) |
Core/Objects: Switch to unique_ptr in UF::OptionalUpdateFieldBase
Diffstat (limited to 'src/server/game')
-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 = { }; }; |