aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-11-21 12:21:44 +0100
committerShauren <shauren.trinity@gmail.com>2020-12-08 18:16:47 +0100
commit426cb31676338cf6e5411d38f645f98a7e6ccb91 (patch)
treed3f552a41168e0fe36aec0f60f0daff2a0a6ffcf /src/server/game
parent4ce6df1d2517959f39f32205cedc354ab0cbad73 (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.h16
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 = { };
};