From 8f3f5b99c1d4ac402c1fdc40c2997323f7dcdafa Mon Sep 17 00:00:00 2001 From: skypjack Date: Tue, 31 Mar 2026 10:32:22 +0200 Subject: [PATCH] stl: iterator_traits --- src/entt/core/algorithm.hpp | 4 ++-- src/entt/core/iterator.hpp | 2 +- src/entt/core/type_traits.hpp | 2 +- src/entt/entity/handle.hpp | 2 +- src/entt/entity/registry.hpp | 2 +- src/entt/entity/runtime_view.hpp | 2 +- src/entt/entity/storage.hpp | 4 ++-- src/entt/entity/view.hpp | 4 ++-- src/entt/stl/iterator.hpp | 1 + 9 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/entt/core/algorithm.hpp b/src/entt/core/algorithm.hpp index cf692cdbc..b8a19a96d 100644 --- a/src/entt/core/algorithm.hpp +++ b/src/entt/core/algorithm.hpp @@ -97,8 +97,8 @@ struct radix_sort { if(first < last) { constexpr auto passes = N / Bit; - using value_type = std::iterator_traits::value_type; - using difference_type = std::iterator_traits::difference_type; + using value_type = stl::iterator_traits::value_type; + using difference_type = stl::iterator_traits::difference_type; stl::vector aux(static_cast(stl::distance(first, last))); auto part = [getter = std::move(getter)](auto from, auto to, auto out, auto start) { diff --git a/src/entt/core/iterator.hpp b/src/entt/core/iterator.hpp index 2170ef87d..a18e6a259 100644 --- a/src/entt/core/iterator.hpp +++ b/src/entt/core/iterator.hpp @@ -123,7 +123,7 @@ private: template Sentinel = It> struct iterable_adaptor final { /*! @brief Value type. */ - using value_type = std::iterator_traits::value_type; + using value_type = stl::iterator_traits::value_type; /*! @brief Iterator type. */ using iterator = It; /*! @brief Sentinel type. */ diff --git a/src/entt/core/type_traits.hpp b/src/entt/core/type_traits.hpp index 5ce422f7c..11a0044bf 100644 --- a/src/entt/core/type_traits.hpp +++ b/src/entt/core/type_traits.hpp @@ -666,7 +666,7 @@ template struct has_iterator_category: std::false_type {}; template -requires requires { typename std::iterator_traits::iterator_category; } +requires requires { typename stl::iterator_traits::iterator_category; } struct has_iterator_category: std::true_type {}; } // namespace internal diff --git a/src/entt/entity/handle.hpp b/src/entt/entity/handle.hpp index 287142dc3..c3c04baaa 100644 --- a/src/entt/entity/handle.hpp +++ b/src/entt/entity/handle.hpp @@ -25,7 +25,7 @@ class handle_storage_iterator final { using entity_type = underlying_type::entity_type; public: - using value_type = std::iterator_traits::value_type; + using value_type = stl::iterator_traits::value_type; using pointer = input_iterator_pointer; using reference = value_type; using difference_type = std::ptrdiff_t; diff --git a/src/entt/entity/registry.hpp b/src/entt/entity/registry.hpp index d23e62383..e1e24840b 100644 --- a/src/entt/entity/registry.hpp +++ b/src/entt/entity/registry.hpp @@ -598,7 +598,7 @@ public: * @param from An iterator to the first element of the range of elements. */ template - requires std::same_as::value_type, Type> + requires std::same_as::value_type, Type> void insert(EIt first, EIt last, CIt from) { ENTT_ASSERT(std::all_of(first, last, [this](const auto entt) { return valid(entt); }), "Invalid entity"); assure().insert(first, last, from); diff --git a/src/entt/entity/runtime_view.hpp b/src/entt/entity/runtime_view.hpp index 81f497505..fbb30fe13 100644 --- a/src/entt/entity/runtime_view.hpp +++ b/src/entt/entity/runtime_view.hpp @@ -17,7 +17,7 @@ namespace internal { template class runtime_view_iterator final { using iterator_type = Set::iterator; - using iterator_traits = std::iterator_traits; + using iterator_traits = stl::iterator_traits; [[nodiscard]] bool valid() const { return (!tombstone_check || *it != tombstone) diff --git a/src/entt/entity/storage.hpp b/src/entt/entity/storage.hpp index a4b0f5467..83eeadbb9 100644 --- a/src/entt/entity/storage.hpp +++ b/src/entt/entity/storage.hpp @@ -34,7 +34,7 @@ class storage_iterator final { using container_type = std::remove_const_t; using alloc_traits = std::allocator_traits; - using iterator_traits = std::iterator_traits, typename alloc_traits::template rebind_traits::element_type>::const_pointer, typename alloc_traits::template rebind_traits::element_type>::pointer>>; @@ -725,7 +725,7 @@ public: * @return Iterator pointing to the first element inserted, if any. */ template - requires std::same_as::value_type, value_type> + requires std::same_as::value_type, value_type> iterator insert(stl::input_iterator auto first, stl::input_iterator auto last, It from) { for(; first != last; ++first, ++from) { emplace_element(*first, true, *from); diff --git a/src/entt/entity/view.hpp b/src/entt/entity/view.hpp index ae20123f6..b2ac3439a 100644 --- a/src/entt/entity/view.hpp +++ b/src/entt/entity/view.hpp @@ -41,7 +41,7 @@ const Type *view_placeholder() { } template -[[nodiscard]] bool fully_initialized(It first, const It last, const std::remove_pointer_t::value_type> *placeholder) noexcept { +[[nodiscard]] bool fully_initialized(It first, const It last, const std::remove_pointer_t::value_type> *placeholder) noexcept { for(; (first != last) && *first != placeholder; ++first) {} return first == last; } @@ -63,7 +63,7 @@ class view_iterator final { friend struct extended_view_iterator; using iterator_type = Type::const_iterator; - using iterator_traits = std::iterator_traits; + using iterator_traits = stl::iterator_traits; [[nodiscard]] bool valid(const iterator_traits::value_type entt) const noexcept { return (!Checked || (entt != tombstone)) diff --git a/src/entt/stl/iterator.hpp b/src/entt/stl/iterator.hpp index e195ed840..4b285d4c2 100644 --- a/src/entt/stl/iterator.hpp +++ b/src/entt/stl/iterator.hpp @@ -11,6 +11,7 @@ using std::bidirectional_iterator_tag; using std::distance; using std::forward_iterator_tag; using std::input_iterator_tag; +using std::iterator_traits; using std::make_reverse_iterator; using std::random_access_iterator_tag; using std::reverse_iterator;