|
@@ -1,6 +1,7 @@
|
|
|
#ifndef ENTT_META_RANGE_HPP
|
|
#ifndef ENTT_META_RANGE_HPP
|
|
|
#define ENTT_META_RANGE_HPP
|
|
#define ENTT_META_RANGE_HPP
|
|
|
|
|
|
|
|
|
|
+#include <compare>
|
|
|
#include <cstddef>
|
|
#include <cstddef>
|
|
|
#include <iterator>
|
|
#include <iterator>
|
|
|
#include <utility>
|
|
#include <utility>
|
|
@@ -86,50 +87,23 @@ struct meta_range_iterator final {
|
|
|
return operator[](0);
|
|
return operator[](0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- template<typename... Args>
|
|
|
|
|
- friend constexpr std::ptrdiff_t operator-(const meta_range_iterator<Args...> &, const meta_range_iterator<Args...> &) noexcept;
|
|
|
|
|
|
|
+ [[nodiscard]] constexpr std::ptrdiff_t operator-(const meta_range_iterator &other) const noexcept {
|
|
|
|
|
+ return it - other.it;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template<typename... Args>
|
|
|
|
|
- friend constexpr bool operator==(const meta_range_iterator<Args...> &, const meta_range_iterator<Args...> &) noexcept;
|
|
|
|
|
|
|
+ [[nodiscard]] constexpr bool operator==(const meta_range_iterator &other) const noexcept {
|
|
|
|
|
+ return it == other.it;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- template<typename... Args>
|
|
|
|
|
- friend constexpr bool operator<(const meta_range_iterator<Args...> &, const meta_range_iterator<Args...> &) noexcept;
|
|
|
|
|
|
|
+ [[nodiscard]] constexpr auto operator<=>(const meta_range_iterator &other) const noexcept {
|
|
|
|
|
+ return it <=> other.it;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
private:
|
|
private:
|
|
|
It it;
|
|
It it;
|
|
|
const meta_ctx *ctx;
|
|
const meta_ctx *ctx;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-template<typename... Args>
|
|
|
|
|
-[[nodiscard]] constexpr std::ptrdiff_t operator-(const meta_range_iterator<Args...> &lhs, const meta_range_iterator<Args...> &rhs) noexcept {
|
|
|
|
|
- return lhs.it - rhs.it;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-template<typename... Args>
|
|
|
|
|
-[[nodiscard]] constexpr bool operator==(const meta_range_iterator<Args...> &lhs, const meta_range_iterator<Args...> &rhs) noexcept {
|
|
|
|
|
- return lhs.it == rhs.it;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-template<typename... Args>
|
|
|
|
|
-[[nodiscard]] constexpr bool operator<(const meta_range_iterator<Args...> &lhs, const meta_range_iterator<Args...> &rhs) noexcept {
|
|
|
|
|
- return lhs.it < rhs.it;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-template<typename... Args>
|
|
|
|
|
-[[nodiscard]] constexpr bool operator>(const meta_range_iterator<Args...> &lhs, const meta_range_iterator<Args...> &rhs) noexcept {
|
|
|
|
|
- return rhs < lhs;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-template<typename... Args>
|
|
|
|
|
-[[nodiscard]] constexpr bool operator<=(const meta_range_iterator<Args...> &lhs, const meta_range_iterator<Args...> &rhs) noexcept {
|
|
|
|
|
- return !(lhs > rhs);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-template<typename... Args>
|
|
|
|
|
-[[nodiscard]] constexpr bool operator>=(const meta_range_iterator<Args...> &lhs, const meta_range_iterator<Args...> &rhs) noexcept {
|
|
|
|
|
- return !(lhs < rhs);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
} // namespace internal
|
|
} // namespace internal
|
|
|
/*! @endcond */
|
|
/*! @endcond */
|
|
|
|
|
|