From 3281239bedfee5c2157a45d09efc10d00c977eab Mon Sep 17 00:00:00 2001 From: skypjack Date: Tue, 14 Apr 2026 14:04:55 +0200 Subject: [PATCH] stl: std::get --- src/entt/container/table.hpp | 64 +++++++++++++++---------------- src/entt/core/compressed_pair.hpp | 4 +- src/entt/core/tuple.hpp | 2 +- src/entt/entity/group.hpp | 18 ++++----- src/entt/entity/storage.hpp | 8 ++-- src/entt/entity/view.hpp | 10 ++--- src/entt/poly/poly.hpp | 8 ++-- src/entt/signal/delegate.hpp | 6 +-- src/entt/stl/array.hpp | 1 + src/entt/stl/tuple.hpp | 1 + src/entt/tools/davey.hpp | 2 +- 11 files changed, 63 insertions(+), 61 deletions(-) diff --git a/src/entt/container/table.hpp b/src/entt/container/table.hpp index c87281532..a08b18cec 100644 --- a/src/entt/container/table.hpp +++ b/src/entt/container/table.hpp @@ -37,10 +37,10 @@ public: template requires (std::constructible_from && ...) constexpr table_iterator(const table_iterator &other) noexcept - : table_iterator{std::get(other.it)...} {} + : table_iterator{stl::get(other.it)...} {} constexpr table_iterator &operator++() noexcept { - return (++std::get(it), ...), *this; + return (++stl::get(it), ...), *this; } constexpr table_iterator operator++(int) noexcept { @@ -49,7 +49,7 @@ public: } constexpr table_iterator &operator--() noexcept { - return (--std::get(it), ...), *this; + return (--stl::get(it), ...), *this; } constexpr table_iterator operator--(int) noexcept { @@ -58,7 +58,7 @@ public: } constexpr table_iterator &operator+=(const difference_type value) noexcept { - return ((std::get(it) += value), ...), *this; + return ((stl::get(it) += value), ...), *this; } constexpr table_iterator operator+(const difference_type value) const noexcept { @@ -75,7 +75,7 @@ public: } [[nodiscard]] constexpr reference operator[](const difference_type value) const noexcept { - return stl::forward_as_tuple(std::get(it)[value]...); + return stl::forward_as_tuple(stl::get(it)[value]...); } [[nodiscard]] constexpr pointer operator->() const noexcept { @@ -88,17 +88,17 @@ public: template [[nodiscard]] constexpr stl::ptrdiff_t operator-(const table_iterator &other) const noexcept { - return std::get<0>(it) - std::get<0>(other.it); + return stl::get<0>(it) - stl::get<0>(other.it); } template [[nodiscard]] constexpr bool operator==(const table_iterator &other) const noexcept { - return std::get<0>(it) == std::get<0>(other.it); + return stl::get<0>(it) == stl::get<0>(other.it); } template [[nodiscard]] constexpr auto operator<=>(const table_iterator &other) const noexcept { - return std::get<0>(it) <=> std::get<0>(other.it); + return stl::get<0>(it) <=> stl::get<0>(other.it); } private: @@ -146,7 +146,7 @@ public: */ explicit basic_table(const Container &...container) noexcept : payload{container...} { - ENTT_ASSERT((((std::get(payload).size() * sizeof...(Container)) == (std::get(payload).size() + ...)) && ...), "Unexpected container size"); + ENTT_ASSERT((((stl::get(payload).size() * sizeof...(Container)) == (stl::get(payload).size() + ...)) && ...), "Unexpected container size"); } /** @@ -155,7 +155,7 @@ public: */ explicit basic_table(Container &&...container) noexcept : payload{stl::move(container)...} { - ENTT_ASSERT((((std::get(payload).size() * sizeof...(Container)) == (std::get(payload).size() + ...)) && ...), "Unexpected container size"); + ENTT_ASSERT((((stl::get(payload).size() * sizeof...(Container)) == (stl::get(payload).size() + ...)) && ...), "Unexpected container size"); } /*! @brief Default copy constructor, deleted on purpose. */ @@ -184,7 +184,7 @@ public: template basic_table(const Container &...container, const Allocator &allocator) noexcept : payload{Container{container, allocator}...} { - ENTT_ASSERT((((std::get(payload).size() * sizeof...(Container)) == (std::get(payload).size() + ...)) && ...), "Unexpected container size"); + ENTT_ASSERT((((stl::get(payload).size() * sizeof...(Container)) == (stl::get(payload).size() + ...)) && ...), "Unexpected container size"); } /** @@ -196,7 +196,7 @@ public: template basic_table(Container &&...container, const Allocator &allocator) noexcept : payload{Container{stl::move(container), allocator}...} { - ENTT_ASSERT((((std::get(payload).size() * sizeof...(Container)) == (std::get(payload).size() + ...)) && ...), "Unexpected container size"); + ENTT_ASSERT((((stl::get(payload).size() * sizeof...(Container)) == (stl::get(payload).size() + ...)) && ...), "Unexpected container size"); } /** @@ -207,7 +207,7 @@ public: */ template basic_table(basic_table &&other, const Allocator &allocator) - : payload{Container{stl::move(std::get(other.payload)), allocator}...} {} + : payload{Container{stl::move(stl::get(other.payload)), allocator}...} {} /*! @brief Default destructor. */ ~basic_table() = default; @@ -246,7 +246,7 @@ public: * @param cap Desired capacity. */ void reserve(const size_type cap) { - (std::get(payload).reserve(cap), ...); + (stl::get(payload).reserve(cap), ...); } /** @@ -255,12 +255,12 @@ public: * @return Capacity of the table. */ [[nodiscard]] size_type capacity() const noexcept { - return std::get<0>(payload).capacity(); + return stl::get<0>(payload).capacity(); } /*! @brief Requests the removal of unused capacity. */ void shrink_to_fit() { - (std::get(payload).shrink_to_fit(), ...); + (stl::get(payload).shrink_to_fit(), ...); } /** @@ -268,7 +268,7 @@ public: * @return Number of rows. */ [[nodiscard]] size_type size() const noexcept { - return std::get<0>(payload).size(); + return stl::get<0>(payload).size(); } /** @@ -276,7 +276,7 @@ public: * @return True if the table is empty, false otherwise. */ [[nodiscard]] bool empty() const noexcept { - return std::get<0>(payload).empty(); + return stl::get<0>(payload).empty(); } /** @@ -287,7 +287,7 @@ public: * @return An iterator to the first row of the table. */ [[nodiscard]] const_iterator cbegin() const noexcept { - return {std::get(payload).cbegin()...}; + return {stl::get(payload).cbegin()...}; } /*! @copydoc cbegin */ @@ -297,7 +297,7 @@ public: /*! @copydoc begin */ [[nodiscard]] iterator begin() noexcept { - return {std::get(payload).begin()...}; + return {stl::get(payload).begin()...}; } /** @@ -305,7 +305,7 @@ public: * @return An iterator to the element following the last row of the table. */ [[nodiscard]] const_iterator cend() const noexcept { - return {std::get(payload).cend()...}; + return {stl::get(payload).cend()...}; } /*! @copydoc cend */ @@ -315,7 +315,7 @@ public: /*! @copydoc end */ [[nodiscard]] iterator end() noexcept { - return {std::get(payload).end()...}; + return {stl::get(payload).end()...}; } /** @@ -326,7 +326,7 @@ public: * @return An iterator to the first row of the reversed table. */ [[nodiscard]] const_reverse_iterator crbegin() const noexcept { - return {std::get(payload).crbegin()...}; + return {stl::get(payload).crbegin()...}; } /*! @copydoc crbegin */ @@ -336,7 +336,7 @@ public: /*! @copydoc rbegin */ [[nodiscard]] reverse_iterator rbegin() noexcept { - return {std::get(payload).rbegin()...}; + return {stl::get(payload).rbegin()...}; } /** @@ -345,7 +345,7 @@ public: * table. */ [[nodiscard]] const_reverse_iterator crend() const noexcept { - return {std::get(payload).crend()...}; + return {stl::get(payload).crend()...}; } /*! @copydoc crend */ @@ -355,7 +355,7 @@ public: /*! @copydoc rend */ [[nodiscard]] reverse_iterator rend() noexcept { - return {std::get(payload).rend()...}; + return {stl::get(payload).rend()...}; } /** @@ -367,9 +367,9 @@ public: template stl::tuple emplace(Args &&...args) { if constexpr(sizeof...(Args) == 0u) { - return stl::forward_as_tuple(std::get(payload).emplace_back()...); + return stl::forward_as_tuple(stl::get(payload).emplace_back()...); } else { - return stl::forward_as_tuple(std::get(payload).emplace_back(stl::forward(args))...); + return stl::forward_as_tuple(stl::get(payload).emplace_back(stl::forward(args))...); } } @@ -380,7 +380,7 @@ public: */ iterator erase(const_iterator pos) { const auto diff = pos - begin(); - return {std::get(payload).erase(std::get(payload).begin() + diff)...}; + return {stl::get(payload).erase(stl::get(payload).begin() + diff)...}; } /** @@ -399,18 +399,18 @@ public: */ [[nodiscard]] stl::tuple operator[](const size_type pos) const { ENTT_ASSERT(pos < size(), "Index out of bounds"); - return stl::forward_as_tuple(std::get(payload)[pos]...); + return stl::forward_as_tuple(stl::get(payload)[pos]...); } /*! @copydoc operator[] */ [[nodiscard]] stl::tuple operator[](const size_type pos) { ENTT_ASSERT(pos < size(), "Index out of bounds"); - return stl::forward_as_tuple(std::get(payload)[pos]...); + return stl::forward_as_tuple(stl::get(payload)[pos]...); } /*! @brief Clears a table. */ void clear() { - (std::get(payload).clear(), ...); + (stl::get(payload).clear(), ...); } private: diff --git a/src/entt/core/compressed_pair.hpp b/src/entt/core/compressed_pair.hpp index 1c7991d5c..b74f185d5 100644 --- a/src/entt/core/compressed_pair.hpp +++ b/src/entt/core/compressed_pair.hpp @@ -30,7 +30,7 @@ struct compressed_pair_element { template constexpr compressed_pair_element(stl::tuple args, stl::index_sequence) noexcept(stl::is_nothrow_constructible_v) - : value{stl::forward(std::get(args))...} {} + : value{stl::forward(stl::get(args))...} {} [[nodiscard]] constexpr reference get() noexcept { return value; @@ -62,7 +62,7 @@ struct compressed_pair_element: Type { template constexpr compressed_pair_element(stl::tuple args, stl::index_sequence) noexcept(stl::is_nothrow_constructible_v) - : base_type{stl::forward(std::get(args))...} {} + : base_type{stl::forward(stl::get(args))...} {} [[nodiscard]] constexpr reference get() noexcept { return *this; diff --git a/src/entt/core/tuple.hpp b/src/entt/core/tuple.hpp index 8b6f12577..dff6a0b53 100644 --- a/src/entt/core/tuple.hpp +++ b/src/entt/core/tuple.hpp @@ -39,7 +39,7 @@ inline constexpr bool is_tuple_v = is_tuple::value; template constexpr decltype(auto) unwrap_tuple(Type &&value) noexcept { if constexpr(stl::tuple_size_v> == 1u) { - return std::get<0>(stl::forward(value)); + return stl::get<0>(stl::forward(value)); } else { return stl::forward(value); } diff --git a/src/entt/entity/group.hpp b/src/entt/entity/group.hpp index ac7c43db0..fdb9bb5db 100644 --- a/src/entt/entity/group.hpp +++ b/src/entt/entity/group.hpp @@ -63,7 +63,7 @@ public: } [[nodiscard]] reference operator*() const noexcept { - return stl::tuple_cat(stl::make_tuple(*it), index_to_element(*std::get(pools))..., std::get(pools)->get_as_tuple(*it)...); + return stl::tuple_cat(stl::make_tuple(*it), index_to_element(*stl::get(pools))..., stl::get(pools)->get_as_tuple(*it)...); } [[nodiscard]] pointer operator->() const noexcept { @@ -505,9 +505,9 @@ public: if constexpr(sizeof...(Index) == 0) { return stl::apply([entt](auto *...curr) { return stl::tuple_cat(curr->get_as_tuple(entt)...); }, cpools); } else if constexpr(sizeof...(Index) == 1) { - return (std::get(cpools)->get(entt), ...); + return (stl::get(cpools)->get(entt), ...); } else { - return stl::tuple_cat(std::get(cpools)->get_as_tuple(entt)...); + return stl::tuple_cat(stl::get(cpools)->get_as_tuple(entt)...); } } @@ -622,9 +622,9 @@ public: } else { auto comp = [&compare, cpools = pools_for(stl::index_sequence_for{})](const entity_type lhs, const entity_type rhs) { if constexpr(sizeof...(Index) == 1) { - return compare((std::get(cpools)->get(lhs), ...), (std::get(cpools)->get(rhs), ...)); + return compare((stl::get(cpools)->get(lhs), ...), (stl::get(cpools)->get(rhs), ...)); } else { - return compare(stl::forward_as_tuple(std::get(cpools)->get(lhs)...), stl::forward_as_tuple(std::get(cpools)->get(rhs)...)); + return compare(stl::forward_as_tuple(stl::get(cpools)->get(lhs)...), stl::forward_as_tuple(stl::get(cpools)->get(rhs)...)); } }; @@ -904,9 +904,9 @@ public: if constexpr(sizeof...(Index) == 0) { return stl::apply([entt](auto *...curr) { return stl::tuple_cat(curr->get_as_tuple(entt)...); }, cpools); } else if constexpr(sizeof...(Index) == 1) { - return (std::get(cpools)->get(entt), ...); + return (stl::get(cpools)->get(entt), ...); } else { - return stl::tuple_cat(std::get(cpools)->get_as_tuple(entt)...); + return stl::tuple_cat(stl::get(cpools)->get_as_tuple(entt)...); } } @@ -1023,9 +1023,9 @@ public: } else { auto comp = [&compare, &cpools](const entity_type lhs, const entity_type rhs) { if constexpr(sizeof...(Index) == 1) { - return compare((std::get(cpools)->get(lhs), ...), (std::get(cpools)->get(rhs), ...)); + return compare((stl::get(cpools)->get(lhs), ...), (stl::get(cpools)->get(rhs), ...)); } else { - return compare(stl::forward_as_tuple(std::get(cpools)->get(lhs)...), stl::forward_as_tuple(std::get(cpools)->get(rhs)...)); + return compare(stl::forward_as_tuple(stl::get(cpools)->get(lhs)...), stl::forward_as_tuple(stl::get(cpools)->get(rhs)...)); } }; diff --git a/src/entt/entity/storage.hpp b/src/entt/entity/storage.hpp index 143f10eee..ea87b1f14 100644 --- a/src/entt/entity/storage.hpp +++ b/src/entt/entity/storage.hpp @@ -158,7 +158,7 @@ public: : it{other.it} {} constexpr extended_storage_iterator &operator++() noexcept { - return ++std::get(it), (++std::get(it), ...), *this; + return ++stl::get(it), (++stl::get(it), ...), *this; } constexpr extended_storage_iterator operator++(int) noexcept { @@ -171,16 +171,16 @@ public: } [[nodiscard]] constexpr reference operator*() const noexcept { - return {*std::get(it), *std::get(it)...}; + return {*stl::get(it), *stl::get(it)...}; } [[nodiscard]] constexpr iterator_type base() const noexcept { - return std::get(it); + return stl::get(it); } template [[nodiscard]] constexpr bool operator==(const extended_storage_iterator &other) const noexcept { - return std::get<0>(it) == std::get<0>(other.it); + return stl::get<0>(it) == stl::get<0>(other.it); } private: diff --git a/src/entt/entity/view.hpp b/src/entt/entity/view.hpp index 510184239..e042228b3 100644 --- a/src/entt/entity/view.hpp +++ b/src/entt/entity/view.hpp @@ -155,7 +155,7 @@ struct extended_view_iterator final { [[nodiscard]] reference operator*() const noexcept { return [this](stl::index_sequence) { - return stl::tuple_cat(stl::make_tuple(*it), static_cast(const_cast *>(std::get(it.pools)))->get_as_tuple(*it)...); + return stl::tuple_cat(stl::make_tuple(*it), static_cast(const_cast *>(stl::get(it.pools)))->get_as_tuple(*it)...); }(stl::index_sequence_for{}); } @@ -420,16 +420,16 @@ class basic_view, exclude_t> template [[nodiscard]] auto dispatch_get(const stl::tuple &curr) const { if constexpr(Curr == Other) { - return stl::forward_as_tuple(std::get(curr)...); + return stl::forward_as_tuple(stl::get(curr)...); } else { - return storage()->get_as_tuple(std::get<0>(curr)); + return storage()->get_as_tuple(stl::get<0>(curr)); } } template void each(Func func, stl::index_sequence) const { for(const auto curr: storage()->each()) { - if(const auto entt = std::get<0>(curr); (!internal::tombstone_check_v || (entt != tombstone)) && ((Curr == Index || base_type::pool_at(Index)->contains(entt)) && ...) && base_type::none_of(entt)) { + if(const auto entt = stl::get<0>(curr); (!internal::tombstone_check_v || (entt != tombstone)) && ((Curr == Index || base_type::pool_at(Index)->contains(entt)) && ...) && base_type::none_of(entt)) { if constexpr(is_applicable_v{}, stl::declval().get({})))>) { stl::apply(func, stl::tuple_cat(stl::make_tuple(entt), dispatch_get(curr)...)); } else { @@ -937,7 +937,7 @@ public: * @param value The storage for the type to iterate. */ basic_view(stl::tuple value, stl::tuple<> = {}) noexcept - : basic_view{std::get<0>(value)} {} + : basic_view{stl::get<0>(value)} {} /** * @brief Constructs a view from a convertible counterpart. diff --git a/src/entt/poly/poly.hpp b/src/entt/poly/poly.hpp index 31c9fe3d4..175dd3432 100644 --- a/src/entt/poly/poly.hpp +++ b/src/entt/poly/poly.hpp @@ -97,7 +97,7 @@ class poly_vtable { template [[nodiscard]] static auto fill_vtable(stl::index_sequence) noexcept { vtable_type impl{}; - (fill_vtable_entry>>(std::get(impl)), ...); + (fill_vtable_entry>>(stl::get(impl)), ...); return impl; } @@ -118,7 +118,7 @@ public: static const vtable_type vtable = fill_vtable(stl::make_index_sequence::size>{}); if constexpr(is_mono) { - return std::get<0>(vtable); + return stl::get<0>(vtable); } else { return &vtable; } @@ -146,7 +146,7 @@ struct poly_base { if constexpr(stl::is_function_v>) { return poly.vtable(poly.storage, stl::forward(args)...); } else { - return std::get(*poly.vtable)(poly.storage, stl::forward(args)...); + return stl::get(*poly.vtable)(poly.storage, stl::forward(args)...); } } @@ -159,7 +159,7 @@ struct poly_base { static_assert(Member == 0u, "Unknown member"); return poly.vtable(poly.storage, stl::forward(args)...); } else { - return std::get(*poly.vtable)(poly.storage, stl::forward(args)...); + return stl::get(*poly.vtable)(poly.storage, stl::forward(args)...); } } }; diff --git a/src/entt/signal/delegate.hpp b/src/entt/signal/delegate.hpp index 49f29f34a..dfffc41a8 100644 --- a/src/entt/signal/delegate.hpp +++ b/src/entt/signal/delegate.hpp @@ -73,7 +73,7 @@ class delegate { return [](const void *, Args... args) -> return_type { [[maybe_unused]] const auto arguments = stl::forward_as_tuple(stl::forward(args)...); [[maybe_unused]] constexpr auto offset = !stl::is_invocable_r_v>...> * (sizeof...(Args) - sizeof...(Index)); - return static_cast(std::invoke(Candidate, stl::forward>>(std::get(arguments))...)); + return static_cast(std::invoke(Candidate, stl::forward>>(stl::get(arguments))...)); }; } @@ -83,7 +83,7 @@ class delegate { Type *curr = static_cast(const_cast *>(payload)); [[maybe_unused]] const auto arguments = stl::forward_as_tuple(stl::forward(args)...); [[maybe_unused]] constexpr auto offset = !stl::is_invocable_r_v>...> * (sizeof...(Args) - sizeof...(Index)); - return static_cast(std::invoke(Candidate, *curr, stl::forward>>(std::get(arguments))...)); + return static_cast(std::invoke(Candidate, *curr, stl::forward>>(stl::get(arguments))...)); }; } @@ -93,7 +93,7 @@ class delegate { Type *curr = static_cast(const_cast *>(payload)); [[maybe_unused]] const auto arguments = stl::forward_as_tuple(stl::forward(args)...); [[maybe_unused]] constexpr auto offset = !stl::is_invocable_r_v>...> * (sizeof...(Args) - sizeof...(Index)); - return static_cast(std::invoke(Candidate, curr, stl::forward>>(std::get(arguments))...)); + return static_cast(std::invoke(Candidate, curr, stl::forward>>(stl::get(arguments))...)); }; } diff --git a/src/entt/stl/array.hpp b/src/entt/stl/array.hpp index 3fbbcc975..eecb17247 100644 --- a/src/entt/stl/array.hpp +++ b/src/entt/stl/array.hpp @@ -7,6 +7,7 @@ namespace entt::stl { using std::array; +using std::get; } // namespace entt::stl /*! @endcond */ diff --git a/src/entt/stl/tuple.hpp b/src/entt/stl/tuple.hpp index 253f18e11..57c7892a1 100644 --- a/src/entt/stl/tuple.hpp +++ b/src/entt/stl/tuple.hpp @@ -8,6 +8,7 @@ namespace entt::stl { using std::apply; using std::forward_as_tuple; +using std::get; using std::make_from_tuple; using std::make_tuple; using std::tuple; diff --git a/src/entt/tools/davey.hpp b/src/entt/tools/davey.hpp index d54eb534e..5ef6f08f1 100644 --- a/src/entt/tools/davey.hpp +++ b/src/entt/tools/davey.hpp @@ -200,7 +200,7 @@ static void present_view(const meta_ctx &ctx, const basic_view, ex const stl::array range{view.template storage()...}; for(auto tup: view.each()) { - const auto entt = std::get<0>(tup); + const auto entt = stl::get<0>(tup); ImGui::PushID(static_cast(to_entity(entt))); if(ImGui::TreeNode(&type_id(), "%d [%d/%d]", to_integral(entt), to_entity(entt), to_version(entt))) {