aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-08-13 19:34:15 +0200
committerShauren <shauren.trinity@gmail.com>2022-08-13 19:34:15 +0200
commit1d5696a08bd5afae366b36d257aa06c465a980f2 (patch)
tree9f276df449f4b6cc8f2a47814c8a2d6293513de7 /src/server/game/Entities/Object
parent6d23e429c3255545bb0d88444935f7fec2842bb0 (diff)
Core/Misc: Refactor some updatefield constant creation code to work around msvc internal compiler errors
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateField.h18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/server/game/Entities/Object/Updates/UpdateField.h b/src/server/game/Entities/Object/Updates/UpdateField.h
index 9c2eebb82af..0c8266b9cf0 100644
--- a/src/server/game/Entities/Object/Updates/UpdateField.h
+++ b/src/server/game/Entities/Object/Updates/UpdateField.h
@@ -726,7 +726,7 @@ namespace UF
{
};
- template<typename T, std::size_t Size_>
+ template<typename T, std::size_t Size>
class UpdateFieldArrayBase : public UpdateFieldArrayBaseWithoutSize<T>
{
template<typename F, bool PublicSet>
@@ -740,7 +740,6 @@ namespace UF
public:
using value_type = T;
- static constexpr std::size_t Size = Size_;
T const* begin() const
{
@@ -752,7 +751,7 @@ namespace UF
return std::end(_values);
}
- constexpr std::size_t size() const
+ static constexpr std::size_t size()
{
return Size;
}
@@ -766,6 +765,19 @@ namespace UF
T _values[Size] = {};
};
+ // workaround functions for internal compiler errors in msvc 19.33.31629
+ template<typename T>
+ constexpr std::size_t size()
+ {
+ return T::size();
+ }
+
+ template<typename T>
+ constexpr std::size_t size_of_value_type()
+ {
+ return sizeof(typename T::value_type);
+ }
+
template<typename T, std::size_t Size, uint32 Bit, uint32 FirstElementBit>
class UpdateFieldArray : public UpdateFieldArrayBase<T, Size>
{