From 151f180199ccd760f8ce72bd23117a00f3b5cdc4 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Thu, 22 Jul 2021 18:08:19 +0200 Subject: [PATCH] core: make is_equality_comparable[_v] work with iterators (close #739) --- src/entt/core/type_traits.hpp | 4 +++- test/entt/core/type_traits.cpp | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) 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);