diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-08-13 19:34:15 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-08-13 19:34:15 +0200 |
| commit | 1d5696a08bd5afae366b36d257aa06c465a980f2 (patch) | |
| tree | 9f276df449f4b6cc8f2a47814c8a2d6293513de7 /src/server/game/Entities/Object | |
| parent | 6d23e429c3255545bb0d88444935f7fec2842bb0 (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.h | 18 |
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> { |
