storage: avoid using base_type::at internally

This commit is contained in:
Michele Caini
2024-01-01 16:39:51 +01:00
parent 776c541d1c
commit 010f0b9402

View File

@@ -281,7 +281,7 @@ class basic_storage: public basic_sparse_set<Entity, typename std::allocator_tra
for(auto pos = sz, length = base_type::size(); pos < length; ++pos) {
if constexpr(traits_type::in_place_delete) {
if(base_type::at(pos) != tombstone) {
if(base_type::data()[pos] != tombstone) {
alloc_traits::destroy(allocator, std::addressof(element_at(pos)));
}
} else {
@@ -1062,7 +1062,7 @@ public:
*/
entity_type emplace() {
const auto len = base_type::free_list();
const auto entt = (len == base_type::size()) ? entity_at(len) : base_type::at(len);
const auto entt = (len == base_type::size()) ? entity_at(len) : base_type::data()[len];
return *base_type::try_emplace(entt, true);
}
@@ -1115,7 +1115,7 @@ public:
template<typename It>
void insert(It first, It last) {
for(const auto sz = base_type::size(); first != last && base_type::free_list() != sz; ++first) {
*first = *base_type::try_emplace(base_type::at(base_type::free_list()), true);
*first = *base_type::try_emplace(base_type::data()[base_type::free_list()], true);
}
for(; first != last; ++first) {