diff --git a/src/entt/meta/factory.hpp b/src/entt/meta/factory.hpp index 786be35a6..e2d9b0e11 100644 --- a/src/entt/meta/factory.hpp +++ b/src/entt/meta/factory.hpp @@ -184,7 +184,7 @@ public: *info, type_id().hash(), internal::meta_conv_node{ - +[](const void *instance) { + +[](const void *instance, const meta_ctx &ctx/*_TODO*/) { return forward_as_meta(std::invoke(Candidate, *static_cast(instance))); }}); @@ -209,7 +209,7 @@ public: *info, type_id().hash(), internal::meta_conv_node{ - +[](const void *instance) { + +[](const void *instance, const meta_ctx &ctx/*_TODO*/) { return forward_as_meta(static_cast(*static_cast(instance))); }}); diff --git a/src/entt/meta/meta.hpp b/src/entt/meta/meta.hpp index 5d4e689b1..bc22f8f33 100644 --- a/src/entt/meta/meta.hpp +++ b/src/entt/meta/meta.hpp @@ -1451,9 +1451,10 @@ bool meta_any::set(const id_type id, Type &&value) { } if(const auto *value = data(); node.details) { + auto &&ctx_TODO = locator::value_or(); + auto &&context_TODO = internal::meta_context::from(ctx_TODO); + for(auto &&curr: node.details->base) { - auto &&ctx_TODO = locator::value_or(); - auto &&context_TODO = internal::meta_context::from(ctx_TODO); const auto &as_const = curr.second.type(context_TODO).from_void(nullptr, curr.second.cast(value), ctx_TODO); if(auto other = as_const.allow_cast(type); other) { @@ -1462,7 +1463,7 @@ bool meta_any::set(const id_type id, Type &&value) { } if(auto it = node.details->conv.find(type.info().hash()); it != node.details->conv.cend()) { - return it->second.conv(data()); + return it->second.conv(data(), ctx_TODO); } } diff --git a/src/entt/meta/node.hpp b/src/entt/meta/node.hpp index f0facf5b9..086ac883b 100644 --- a/src/entt/meta/node.hpp +++ b/src/entt/meta/node.hpp @@ -59,7 +59,7 @@ struct meta_base_node { }; struct meta_conv_node { - meta_any (*conv)(const void *){}; + meta_any (*conv)(const void *, const meta_ctx &){}; }; struct meta_ctor_node {