diff --git a/src/entt/core/type_traits.hpp b/src/entt/core/type_traits.hpp index f380507e2..5976d0a3c 100644 --- a/src/entt/core/type_traits.hpp +++ b/src/entt/core/type_traits.hpp @@ -446,6 +446,26 @@ struct is_complete>: std::true_type {} template inline constexpr bool is_complete_v = is_complete::value; +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct is_iterator: std::false_type {}; + +template +struct is_iterator::iterator_category>>: std::true_type {}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + /** * @brief Provides the member constant `value` to true if a given type is an * iterator, false otherwise. @@ -456,8 +476,8 @@ struct is_iterator: std::false_type {}; /*! @copydoc is_iterator */ template -struct is_iterator::iterator_category>> - : std::true_type {}; +struct is_iterator>, void>>> + : internal::is_iterator {}; /** * @brief Helper variable template. diff --git a/test/entt/core/type_traits.cpp b/test/entt/core/type_traits.cpp index 0ad4a75ed..6caa1d1dd 100644 --- a/test/entt/core/type_traits.cpp +++ b/test/entt/core/type_traits.cpp @@ -136,6 +136,7 @@ TEST(TypeTraits, IsComplete) { TEST(TypeTraits, IsIterator) { static_assert(!entt::is_iterator_v); + static_assert(!entt::is_iterator_v); static_assert(!entt::is_iterator_v); static_assert(entt::is_iterator_v);