From 7941226efff7790eee33754e77bf938709554795 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Sat, 18 Mar 2023 12:48:52 +0100 Subject: [PATCH] group: try to reuse pools when sorting and also please all compilers out there at the same time (aka me figthing ICEs again) --- src/entt/entity/group.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/entt/entity/group.hpp b/src/entt/entity/group.hpp index 7383d6603..99ef9e5f7 100644 --- a/src/entt/entity/group.hpp +++ b/src/entt/entity/group.hpp @@ -602,11 +602,11 @@ public: static_assert(std::is_invocable_v, "Invalid comparison function"); descriptor->group().sort(std::move(compare), std::move(algo), std::forward(args)...); } else { - auto comp = [&compare, cpools = std::forward_as_tuple(storage>()...)](const entity_type lhs, const entity_type rhs) { + auto comp = [&compare, cpools = pools()](const entity_type lhs, const entity_type rhs) { if constexpr(sizeof...(Type) == 1) { - return compare(std::get<0>(cpools).get(lhs), std::get<0>(cpools).get(rhs)); + return compare((std::get>(cpools)->get(lhs), ...), (std::get>(cpools)->get(rhs), ...)); } else { - return std::apply([&compare, lhs, rhs](auto &...cpool) { return compare(std::forward_as_tuple(cpool.get(lhs)...), std::forward_as_tuple(cpool.get(rhs)...)); }, cpools); + return compare(std::forward_as_tuple(std::get>(cpools)->get(lhs)...), std::forward_as_tuple(std::get>(cpools)->get(rhs)...)); } }; @@ -991,11 +991,11 @@ public: 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 = std::forward_as_tuple(storage>()...)](const entity_type lhs, const entity_type rhs) { + auto comp = [&compare, cpools = pools()](const entity_type lhs, const entity_type rhs) { if constexpr(sizeof...(Type) == 1) { - return compare(std::get<0>(cpools).get(lhs), std::get<0>(cpools).get(rhs)); + return compare((std::get>(cpools)->get(lhs), ...), (std::get>(cpools)->get(rhs), ...)); } else { - return std::apply([&compare, lhs, rhs](auto &...cpool) { return compare(std::forward_as_tuple(cpool.get(lhs)...), std::forward_as_tuple(cpool.get(rhs)...)); }, cpools); + return compare(std::forward_as_tuple(std::get>(cpools)->get(lhs)...), std::forward_as_tuple(std::get>(cpools)->get(rhs)...)); } };