diff --git a/src/entt/entity/registry.hpp b/src/entt/entity/registry.hpp index e19b9cfc0..6889fc0ae 100644 --- a/src/entt/entity/registry.hpp +++ b/src/entt/entity/registry.hpp @@ -578,7 +578,7 @@ public: * @param entity A valid entity identifier. */ void destroy(const entity_type entity) { - destroy(entity, (to_integral(entity) >> traits_type::entity_shift) + 1); + destroy(entity, version_type((to_integral(entity) >> traits_type::entity_shift) + 1)); } /** diff --git a/test/entt/entity/registry.cpp b/test/entt/entity/registry.cpp index 4e95d360a..7af4da1a1 100644 --- a/test/entt/entity/registry.cpp +++ b/test/entt/entity/registry.cpp @@ -464,10 +464,12 @@ TEST(Registry, CreateDestroyCornerCase) { } TEST(Registry, VersionOverflow) { + using traits_type = entt::entt_traits; + entt::registry registry; const auto entity = registry.create(); - registry.destroy(entity, entt::entt_traits::version_mask); + registry.destroy(entity, typename traits_type::version_type(traits_type::version_mask)); registry.destroy(registry.create()); ASSERT_EQ(registry.current(entity), registry.version(entity));