From 7a2c5753c5c19c9f4e4a8e8667c4d52b06ad9853 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Tue, 31 Oct 2023 15:41:24 +0100 Subject: [PATCH] type_traits: try to please older compilers too --- src/entt/core/type_traits.hpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/entt/core/type_traits.hpp b/src/entt/core/type_traits.hpp index 27da0f2dd..90a2c9f5b 100644 --- a/src/entt/core/type_traits.hpp +++ b/src/entt/core/type_traits.hpp @@ -783,19 +783,25 @@ template [[nodiscard]] constexpr bool dispatch_is_equality_comparable() { if constexpr(std::is_array_v) { return false; - } else if constexpr(has_tuple_size_value::value) { - return maybe_equality_comparable(0) && unpack_maybe_equality_comparable(std::make_index_sequence::value>{}); + } else if constexpr(is_iterator_v) { + return maybe_equality_comparable(0); } else if constexpr(has_value_type::value) { - if constexpr(is_iterator_v || std::is_same_v) { + if constexpr(std::is_same_v) { return maybe_equality_comparable(0); } else if constexpr(dispatch_is_equality_comparable()) { return maybe_equality_comparable(0); } else { return false; } + } else if constexpr(is_complete_v>>) { + if constexpr(has_tuple_size_value::value) { + return maybe_equality_comparable(0) && unpack_maybe_equality_comparable(std::make_index_sequence::value>{}); } else { return maybe_equality_comparable(0); } + } else { + return maybe_equality_comparable(0); +} } } // namespace internal