1
0
Эх сурвалжийг харах

view: const correctness for constructor arguments

Michele Caini 5 жил өмнө
parent
commit
350884c627

+ 4 - 4
src/entt/entity/registry.hpp

@@ -1295,16 +1295,16 @@ public:
      * @return A newly created view.
      * @return A newly created view.
      */
      */
     template<typename... Component, typename... Exclude>
     template<typename... Component, typename... Exclude>
-    entt::basic_view<Entity, exclude_t<Exclude...>, Component...> view(exclude_t<Exclude...> = {}) {
+    entt::basic_view<Entity, exclude_t<Exclude...>, Component...> view(exclude_t<Exclude...> = {}) const {
         static_assert(sizeof...(Component) > 0);
         static_assert(sizeof...(Component) > 0);
         return { assure<std::decay_t<Component>>()..., assure<Exclude>()... };
         return { assure<std::decay_t<Component>>()..., assure<Exclude>()... };
     }
     }
 
 
     /*! @copydoc view */
     /*! @copydoc view */
     template<typename... Component, typename... Exclude>
     template<typename... Component, typename... Exclude>
-    entt::basic_view<Entity, exclude_t<Exclude...>, Component...> view(exclude_t<Exclude...> = {}) const {
-        static_assert(std::conjunction_v<std::is_const<Component>...>);
-        return const_cast<basic_registry *>(this)->view<Component...>(exclude<Exclude...>);
+    entt::basic_view<Entity, exclude_t<Exclude...>, Component...> view(exclude_t<Exclude...> = {}) {
+        static_assert(sizeof...(Component) > 0);
+        return { assure<std::decay_t<Component>>()..., assure<Exclude>()... };
     }
     }
 
 
     /**
     /**

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

@@ -149,8 +149,7 @@ class basic_view<Entity, exclude_t<Exclude...>, Component...> {
         underlying_iterator it;
         underlying_iterator it;
     };
     };
 
 
-    // we could use pool_type<Component> &..., but vs complains about it and refuses to compile for unknown reasons (likely a bug)
-    basic_view(storage<Entity, std::remove_const_t<Component>> &... component, storage<Entity, std::remove_const_t<Exclude>> &... epool) ENTT_NOEXCEPT
+    basic_view(pool_type<Component> &... component, pool_type<Exclude> &... epool) ENTT_NOEXCEPT
         : pools{&component..., &epool...}
         : pools{&component..., &epool...}
     {}
     {}