diff --git a/src/entt/entity/registry.hpp b/src/entt/entity/registry.hpp index 8aaa824eb..39df40cdb 100644 --- a/src/entt/entity/registry.hpp +++ b/src/entt/entity/registry.hpp @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -107,49 +108,25 @@ public: return operator*(); } - template - friend constexpr std::ptrdiff_t operator-(const registry_storage_iterator &, const registry_storage_iterator &) noexcept; + template + [[nodiscard]] constexpr std::ptrdiff_t operator-(const registry_storage_iterator &other) const noexcept { + return it - other.it; + } - template - friend constexpr bool operator==(const registry_storage_iterator &, const registry_storage_iterator &) noexcept; + template + [[nodiscard]] constexpr bool operator==(const registry_storage_iterator &other) const noexcept { + return it == other.it; + } - template - friend constexpr bool operator<(const registry_storage_iterator &, const registry_storage_iterator &) noexcept; + template + [[nodiscard]] constexpr auto operator<=>(const registry_storage_iterator &other) const noexcept { + return it <=> other.it; + } private: It it; }; -template -[[nodiscard]] constexpr std::ptrdiff_t operator-(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { - return lhs.it - rhs.it; -} - -template -[[nodiscard]] constexpr bool operator==(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { - return lhs.it == rhs.it; -} - -template -[[nodiscard]] constexpr bool operator<(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { - return lhs.it < rhs.it; -} - -template -[[nodiscard]] constexpr bool operator>(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { - return rhs < lhs; -} - -template -[[nodiscard]] constexpr bool operator<=(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { - return !(lhs > rhs); -} - -template -[[nodiscard]] constexpr bool operator>=(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { - return !(lhs < rhs); -} - template class registry_context { using alloc_traits = std::allocator_traits;