diff --git a/TODO b/TODO index ac0dd84e6..0d5012043 100644 --- a/TODO +++ b/TODO @@ -33,3 +33,4 @@ TODO: * paged vector as a standalone class * resource: shared_from_this? * change meta_any::base name, it's confusing due to meta_base_node and base types in meta +* delay meta_handle/meta_any creation as long as possible when setting/getting/invoking diff --git a/src/entt/meta/meta.hpp b/src/entt/meta/meta.hpp index 7ad503302..375f8c83f 100644 --- a/src/entt/meta/meta.hpp +++ b/src/entt/meta/meta.hpp @@ -518,9 +518,12 @@ public: template void emplace(Args &&...args) { storage.emplace(std::forward(args)...); - resolve = internal::resolve>>; - lazy_node = internal::meta_type_node{}; - vtable = &basic_vtable>>; + + if(auto *overload = internal::resolve>>; overload != resolve) { + resolve = overload; + lazy_node = internal::meta_type_node{}; + vtable = &basic_vtable>>; + } } /*! @copydoc any::assign */