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