diff --git a/TODO b/TODO index 0567f7d52..ede3c824c 100644 --- a/TODO +++ b/TODO @@ -5,6 +5,7 @@ * custom pools example (multi instance, tables, enable/disable, and so on...) WIP: +* make sparse_set/storage adhere to AllocatorAwareContainer requirements * fast-contains for sparse sets (low prio but nice-to-have) * runtime components (registry), runtime events (dispatcher/emitter), ... * runtime_view/registry, remove reference to basic_sparse_set @@ -14,10 +15,11 @@ WIP: * custom allocators all over WIP: +* customizable any_vtable, sfinae-friendly definition and op::custom for user-def +* remove Entity from views and groups +* registry: fake vtable (mixin injected) to get rid of poly storage, use pointer to sparse set only for pools, discard pool_data type. * general purpose paged vector container -* make sparse_set/storage adhere to AllocatorAwareContainer requirements * make it possible to register externally managed pools with the registry (allow for system centric mode) -* registry: switch to the udata/mixin model and get rid of poly storage, use pointer to sparse set only for pools, discard pool_data type. * resource, forward the id to the loader from the cache and if constexpr the call to load, update doc and describe customization points * make it possible to create views of the type `view`, add get by index and such, allow to register custom pools by name with the registry * add user data to type_info diff --git a/src/entt/entity/storage.hpp b/src/entt/entity/storage.hpp index ea0b21ae3..715e85d75 100644 --- a/src/entt/entity/storage.hpp +++ b/src/entt/entity/storage.hpp @@ -343,7 +343,9 @@ public: /*! @brief Default constructor. */ basic_storage() - : basic_storage{allocator_type{}} + : base_type{deletion_policy{comp_traits::in_place_delete::value}}, + bucket{allocator_type{}, size_type{}}, + packed{} {} /** @@ -374,7 +376,7 @@ public: /** * @brief Move assignment operator. * @param other The instance to move from. - * @return This sparse set. + * @return This storage. */ basic_storage & operator=(basic_storage &&other) ENTT_NOEXCEPT { release_memory(); @@ -705,7 +707,7 @@ public: /*! @brief Default constructor. */ basic_storage() - : basic_storage{allocator_type{}} + : base_type{deletion_policy{comp_traits::in_place_delete::value}} {} /** @@ -716,6 +718,19 @@ public: : base_type{deletion_policy{comp_traits::in_place_delete::value}, allocator} {} + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + basic_storage(basic_storage &&other) ENTT_NOEXCEPT = default; + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This storage. + */ + basic_storage & operator=(basic_storage &&other) ENTT_NOEXCEPT = default; + /** * @brief Returns the associated allocator. * @return The associated allocator.