diff --git a/src/entt/entity/group.hpp b/src/entt/entity/group.hpp index 67c1602fc..908a5d567 100644 --- a/src/entt/entity/group.hpp +++ b/src/entt/entity/group.hpp @@ -575,7 +575,8 @@ public: * @return An iterable object to use to _visit_ the group. */ [[nodiscard]] iterable each() const noexcept { - return iterable{{begin(), pools()}, {end(), pools()}}; + const auto cpools = pools(); + return iterable{{begin(), cpools}, {end(), cpools}}; } /** @@ -983,7 +984,8 @@ public: * @return An iterable object to use to _visit_ the group. */ [[nodiscard]] iterable each() const noexcept { - return {{begin(), pools()}, {end(), pools()}}; + const auto cpools = pools(); + return {{begin(), cpools}, {end(), cpools}}; } /** @@ -1025,11 +1027,13 @@ public: */ template void sort(Compare compare, Sort algo = Sort{}, Args &&...args) const { + const auto cpools = pools(); + if constexpr(sizeof...(Type) == 0) { static_assert(std::is_invocable_v, "Invalid comparison function"); storage<0>().sort_n(descriptor->length(), std::move(compare), std::move(algo), std::forward(args)...); } else { - auto comp = [&compare, cpools = pools()](const entity_type lhs, const entity_type rhs) { + auto comp = [&compare, &cpools](const entity_type lhs, const entity_type rhs) { if constexpr(sizeof...(Type) == 1) { return compare((std::get>(cpools)->get(lhs), ...), (std::get>(cpools)->get(rhs), ...)); } else { @@ -1048,7 +1052,7 @@ public: } }; - std::apply(cb, pools()); + std::apply(cb, cpools); } private: