diff --git a/src/entt/core/type_traits.hpp b/src/entt/core/type_traits.hpp index 01db08570..2192ec438 100644 --- a/src/entt/core/type_traits.hpp +++ b/src/entt/core/type_traits.hpp @@ -443,7 +443,9 @@ template template [[nodiscard]] constexpr auto is_equality_comparable(choice_t<1>) -> decltype(std::declval(), std::declval() == std::declval()) { - if constexpr(std::is_same_v) { + if constexpr(is_iterator_v) { + return true; + } else if constexpr(std::is_same_v) { return is_equality_comparable(choice<0>); } else { return is_equality_comparable(choice<2>); diff --git a/test/entt/core/type_traits.cpp b/test/entt/core/type_traits.cpp index 0329d3574..718a6c44f 100644 --- a/test/entt/core/type_traits.cpp +++ b/test/entt/core/type_traits.cpp @@ -101,6 +101,7 @@ TEST(TypeTraits, IsEqualityComparable) { static_assert(entt::is_equality_comparable_v>>); static_assert(entt::is_equality_comparable_v>); static_assert(entt::is_equality_comparable_v>>); + static_assert(entt::is_equality_comparable_v::iterator>); static_assert(entt::is_equality_comparable_v); static_assert(!entt::is_equality_comparable_v);