From d76fa92be3c267c31e66a710f14282a8f6a3dce2 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Mon, 21 Aug 2023 11:30:37 +0200 Subject: [PATCH] meta: use the right return type for meta assoc container ::erase function --- src/entt/meta/container.hpp | 2 +- src/entt/meta/meta.hpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/entt/meta/container.hpp b/src/entt/meta/container.hpp index 54a780d9d..a0856efd6 100644 --- a/src/entt/meta/container.hpp +++ b/src/entt/meta/container.hpp @@ -192,7 +192,7 @@ class basic_meta_associative_container_traits { } } - [[nodiscard]] static bool erase(void *container, const void *key) { + [[nodiscard]] static size_type erase(void *container, const void *key) { return static_cast(container)->erase(*static_cast(key)); } diff --git a/src/entt/meta/meta.hpp b/src/entt/meta/meta.hpp index 8f0c8e9ae..094fef017 100644 --- a/src/entt/meta/meta.hpp +++ b/src/entt/meta/meta.hpp @@ -163,7 +163,7 @@ private: void (*begin_fn)(const void *, const bool, iterator &); void (*end_fn)(const void *, const bool, iterator &); bool (*insert_fn)(void *, const void *, const void *); - bool (*erase_fn)(void *, const void *); + size_type (*erase_fn)(void *, const void *); void (*find_fn)(const void *, const bool, const void *, iterator &); any storage{}; }; @@ -1953,8 +1953,8 @@ inline bool meta_associative_container::reserve(const size_type sz) { * @return A bool denoting whether the insertion took place. */ inline bool meta_associative_container::insert(meta_any key, meta_any value = {}) { - const bool valid_key_value = key.allow_cast(meta_type{*ctx, key_type_node(internal::meta_context::from(*ctx))}) && (!mapped_type_node || value.allow_cast(meta_type{*ctx, mapped_type_node(internal::meta_context::from(*ctx))})); - return valid_key_value && (storage.policy() != any_policy::cref) && insert_fn(storage.data(), std::as_const(key).data(), std::as_const(value).data()); + const bool valid_key = key.allow_cast(meta_type{*ctx, key_type_node(internal::meta_context::from(*ctx))}) && (!mapped_type_node || value.allow_cast(meta_type{*ctx, mapped_type_node(internal::meta_context::from(*ctx))})); + return valid_key && (storage.policy() != any_policy::cref) && insert_fn(storage.data(), std::as_const(key).data(), std::as_const(value).data()); } /** @@ -1964,7 +1964,7 @@ inline bool meta_associative_container::insert(meta_any key, meta_any value = {} */ inline meta_associative_container::size_type meta_associative_container::erase(meta_any key) { const bool valid_key = key.allow_cast(meta_type{*ctx, key_type_node(internal::meta_context::from(*ctx))}); - return valid_key && (storage.policy() != any_policy::cref) && erase_fn(storage.data(), std::as_const(key).data()); + return (valid_key && (storage.policy() != any_policy::cref)) ? erase_fn(storage.data(), std::as_const(key).data()) : 0u; } /**