Browse Source

view: reduce instantiations due to none_of

Michele Caini 2 years ago
parent
commit
f3eaa1f74a
1 changed files with 3 additions and 1 deletions
  1. 3 1
      src/entt/entity/view.hpp

+ 3 - 1
src/entt/entity/view.hpp

@@ -28,7 +28,9 @@ template<typename... Args, typename Type, std::size_t N>
 
 
 template<typename Type, std::size_t N>
 template<typename Type, std::size_t N>
 [[nodiscard]] auto none_of(const std::array<const Type *, N> &filter, const typename Type::entity_type entt) noexcept {
 [[nodiscard]] auto none_of(const std::array<const Type *, N> &filter, const typename Type::entity_type entt) noexcept {
-    return std::apply([entt](const auto *...curr) { return (!(curr && curr->contains(entt)) && ...); }, filter);
+    std::size_t pos{};
+    for(; pos < N && !(filter[pos] && filter[pos]->contains(entt)); ++pos) {}
+    return (pos == N);
 }
 }
 
 
 template<typename... Get, typename... Exclude, std::size_t... Index>
 template<typename... Get, typename... Exclude, std::size_t... Index>