ソースを参照

meta: avoid resetting nodes on meta_any::emplace if not needed

skypjack 4 ヶ月 前
コミット
9198a27c25
1 ファイル変更2 行追加2 行削除
  1. 2 2
      src/entt/meta/meta.hpp

+ 2 - 2
src/entt/meta/meta.hpp

@@ -506,8 +506,8 @@ public:
     template<typename Type, typename... Args>
     void emplace(Args &&...args) {
         storage.emplace<Type>(std::forward<Args>(args)...);
-        node = nullptr;
-        vtable = &basic_vtable<std::remove_const_t<std::remove_reference_t<Type>>>;
+        const auto *prev = std::exchange(vtable, &basic_vtable<std::remove_const_t<std::remove_reference_t<Type>>>);
+        node = (prev == vtable) ? node : nullptr;
     }
 
     /*! @copydoc any::assign */