diff --git a/src/entt/stl/iterator.hpp b/src/entt/stl/iterator.hpp index 9f08cc881..ac300cd22 100644 --- a/src/entt/stl/iterator.hpp +++ b/src/entt/stl/iterator.hpp @@ -31,8 +31,28 @@ using std::sentinel_for; namespace internal { +template +concept has_iterator_category = requires { + typename std::iterator_traits::iterator_category; +}; + +template +concept has_iterator_concept = has_iterator_category && requires { + typename It::iterator_concept; +}; + +template +struct iterator_tag { + using type = typename std::iterator_traits::iterator_category; +}; + +template +struct iterator_tag { + using type = typename It::iterator_concept; +}; + template -concept has_iterator_tag = std::derived_from || std::derived_from::iterator_category, Tag>; +concept has_iterator_tag = std::derived_from::type, Tag>; } // namespace internal