view: const correctness for constructor arguments

This commit is contained in:
Michele Caini
2020-05-17 00:18:52 +02:00
parent aa756f6d68
commit 350884c627
2 changed files with 5 additions and 6 deletions

View File

@@ -1295,16 +1295,16 @@ public:
* @return A newly created view.
*/
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);
return { assure<std::decay_t<Component>>()..., assure<Exclude>()... };
}
/*! @copydoc view */
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>()... };
}
/**

View File

@@ -149,8 +149,7 @@ class basic_view<Entity, exclude_t<Exclude...>, Component...> {
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...}
{}