|
|
@@ -518,9 +518,12 @@ public:
|
|
|
template<typename Type, typename... Args>
|
|
|
void emplace(Args &&...args) {
|
|
|
storage.emplace<Type>(std::forward<Args>(args)...);
|
|
|
- resolve = internal::resolve<std::remove_cv_t<std::remove_reference_t<Type>>>;
|
|
|
- lazy_node = internal::meta_type_node{};
|
|
|
- vtable = &basic_vtable<std::remove_cv_t<std::remove_reference_t<Type>>>;
|
|
|
+
|
|
|
+ if(auto *overload = internal::resolve<std::remove_cv_t<std::remove_reference_t<Type>>>; overload != resolve) {
|
|
|
+ resolve = overload;
|
|
|
+ lazy_node = internal::meta_type_node{};
|
|
|
+ vtable = &basic_vtable<std::remove_cv_t<std::remove_reference_t<Type>>>;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*! @copydoc any::assign */
|