diff --git a/src/entt/container/table.hpp b/src/entt/container/table.hpp index 3412abf9d..3d88b0311 100644 --- a/src/entt/container/table.hpp +++ b/src/entt/container/table.hpp @@ -85,49 +85,25 @@ public: return operator[](0); } - template - friend constexpr std::ptrdiff_t operator-(const table_iterator &, const table_iterator &) noexcept; + template + [[nodiscard]] constexpr std::ptrdiff_t operator-(const table_iterator &other) const noexcept { + return std::get<0>(it) - std::get<0>(other.it); + } - template - friend constexpr bool operator==(const table_iterator &, const table_iterator &) noexcept; + template + [[nodiscard]] constexpr bool operator==(const table_iterator &other) const noexcept { + return std::get<0>(it) == std::get<0>(other.it); + } - template - friend constexpr bool operator<(const table_iterator &, const table_iterator &) noexcept; + template + [[nodiscard]] constexpr auto operator<=>(const table_iterator &other) const noexcept { + return std::get<0>(it) <=> std::get<0>(other.it); + } private: std::tuple it; }; -template -[[nodiscard]] constexpr std::ptrdiff_t operator-(const table_iterator &lhs, const table_iterator &rhs) noexcept { - return std::get<0>(lhs.it) - std::get<0>(rhs.it); -} - -template -[[nodiscard]] constexpr bool operator==(const table_iterator &lhs, const table_iterator &rhs) noexcept { - return std::get<0>(lhs.it) == std::get<0>(rhs.it); -} - -template -[[nodiscard]] constexpr bool operator<(const table_iterator &lhs, const table_iterator &rhs) noexcept { - return std::get<0>(lhs.it) < std::get<0>(rhs.it); -} - -template -[[nodiscard]] constexpr bool operator>(const table_iterator &lhs, const table_iterator &rhs) noexcept { - return rhs < lhs; -} - -template -[[nodiscard]] constexpr bool operator<=(const table_iterator &lhs, const table_iterator &rhs) noexcept { - return !(lhs > rhs); -} - -template -[[nodiscard]] constexpr bool operator>=(const table_iterator &lhs, const table_iterator &rhs) noexcept { - return !(lhs < rhs); -} - } // namespace internal /*! @endcond */