From f77823ca2f99ea32bfbf64302124bad8e43a9611 Mon Sep 17 00:00:00 2001 From: Patrick Wuttke Date: Thu, 15 Aug 2024 15:26:59 +0200 Subject: [PATCH] Fixed compilation with MSVC/C++20+. --- include/iwa/type_meta.hpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/include/iwa/type_meta.hpp b/include/iwa/type_meta.hpp index 1d71df4..8889b77 100644 --- a/include/iwa/type_meta.hpp +++ b/include/iwa/type_meta.hpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -175,11 +176,11 @@ struct BitFlagsType unsigned maxBits = 0; }; -using type_t = std::variant; -struct Type : type_t +using type_base_t = std::variant; +struct Type : type_base_t { template - constexpr Type(TArgs&&... args) noexcept : type_t(std::forward(args)...) {} + constexpr Type(TArgs&&... args) noexcept : type_base_t(std::forward(args)...) {} constexpr Type(const Type&) noexcept = default; constexpr Type(Type&&) noexcept = default; @@ -477,7 +478,7 @@ const Struct& reflectStruct() noexcept template constexpr decltype(auto) visitIntValue(TVisitor&& visitor, const void* value, const IntType& type) { - using return_t = std::result_of_t; + using return_t = std::invoke_result_t; if constexpr (std::is_same_v) { @@ -546,7 +547,7 @@ constexpr decltype(auto) visitIntValue(TVisitor&& visitor, const void* value, co template constexpr decltype(auto) visitFloatValue(TVisitor&& visitor, const void* value, const FloatType& type) { - using return_t = std::result_of_t; + using return_t = std::invoke_result_t; if constexpr (std::is_same_v) { @@ -573,7 +574,7 @@ constexpr decltype(auto) visitFloatValue(TVisitor&& visitor, const void* value, template constexpr decltype(auto) visitCharValue(TVisitor&& visitor, const void* value, CharType type) { - using return_t = std::result_of_t; + using return_t = std::invoke_result_t; if constexpr (std::is_same_v) { @@ -608,7 +609,7 @@ constexpr decltype(auto) visitCharValue(TVisitor&& visitor, const void* value, C template constexpr decltype(auto) visitIntValue(TVisitor&& visitor, void* value, const IntType& type) { - using return_t = std::result_of_t; + using return_t = std::invoke_result_t; if constexpr (std::is_same_v) { @@ -677,7 +678,7 @@ constexpr decltype(auto) visitIntValue(TVisitor&& visitor, void* value, const In template constexpr decltype(auto) visitFloatValue(TVisitor&& visitor, void* value, const FloatType& type) { - using return_t = std::result_of_t; + using return_t = std::invoke_result_t; if constexpr (std::is_same_v) { @@ -704,7 +705,7 @@ constexpr decltype(auto) visitFloatValue(TVisitor&& visitor, void* value, const template constexpr decltype(auto) visitCharValue(TVisitor&& visitor, void* value, CharType type) { - using return_t = std::result_of_t; + using return_t = std::invoke_result_t; if constexpr (std::is_same_v) {