From de61a0ca45bc6a4b179e1f567156dc024f717fce Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Fri, 9 Jul 2021 12:41:09 +0200 Subject: [PATCH] view: * suppress warning for shadow parameter * adjust deduced type to avoid compile-time errors --- src/entt/entity/view.hpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/entt/entity/view.hpp b/src/entt/entity/view.hpp index 914d67deb..b35e53c38 100644 --- a/src/entt/entity/view.hpp +++ b/src/entt/entity/view.hpp @@ -35,10 +35,12 @@ class iterable_storage final { using basic_common_type = basic_sparse_set; using storage_type = constness_as_t>::storage_type, Component>; + static constexpr bool has_void_getter = std::is_void_v().get({}))>; + template struct iterable_storage_iterator final { using difference_type = std::ptrdiff_t; - using value_type = decltype(std::tuple_cat(std::tuple{}, std::declval(), {}))>())); + using value_type = decltype(std::tuple_cat(std::tuple{}, std::declval(), {}))>())); using pointer = void; using reference = value_type; using iterator_category = std::input_iterator_tag; @@ -75,12 +77,12 @@ class iterable_storage final { public: using iterator = std::conditional_t< - std::is_void_v().get({}))>, + has_void_getter, iterable_storage_iterator, iterable_storage_iterator().begin())> >; using reverse_iterator = std::conditional_t< - std::is_void_v().get({}))>, + has_void_getter, iterable_storage_iterator, iterable_storage_iterator().rbegin())> >; @@ -374,7 +376,7 @@ class basic_view_impl, Component...> { void traverse(Func func) const { for(const auto curr: internal::iterable_storage{*std::get *>(pools)}) { if(Policy::accept(std::get<0>(curr)) && ((std::is_same_v || std::get *>(pools)->contains(std::get<0>(curr))) && ...) - && std::apply([entt = std::get<0>(curr)](const auto *... curr) { return (!curr->contains(entt) && ...); }, filter)) + && std::apply([entt = std::get<0>(curr)](const auto *... cpool) { return (!cpool->contains(entt) && ...); }, filter)) { if constexpr(is_applicable_v{}, std::declval().get({})))>) { std::apply(func, std::tuple_cat(std::make_tuple(std::get<0>(curr)), dispatch_get(curr)...));