move destructor auto bind to class_bind ctor

This commit is contained in:
BlackMATov
2023-01-11 13:40:18 +07:00
parent 09f99b005d
commit 0e2d886d45
4 changed files with 11 additions and 15 deletions

View File

@@ -62,5 +62,5 @@ TEST_CASE("meta/meta_examples/inplace") {
CHECK(ivec2_length2(ivec2_ptr) == 13);
// you must manually call the object's destructor
ivec2_type.destroy_at(ivec2_buffer.get_memory());
CHECK(ivec2_type.destroy_at(ivec2_buffer.get_memory()));
}

View File

@@ -3655,13 +3655,7 @@ namespace meta_hpp
template < detail::class_kind Class >
class_bind<Class> class_(metadata_map metadata = {}) {
class_bind<Class> bind{std::move(metadata)};
if constexpr ( std::is_destructible_v<Class> ) {
bind.destructor_();
}
return bind;
return class_bind<Class>{std::move(metadata)};
}
template < detail::enum_kind Enum >
@@ -3812,6 +3806,10 @@ namespace meta_hpp
: data_{detail::type_access(resolve_type<Class>())} {
data_->metadata.swap(metadata);
data_->metadata.merge(metadata);
if constexpr ( std::is_destructible_v<Class> ) {
destructor_();
}
}
template < detail::class_kind Class >

View File

@@ -419,13 +419,7 @@ namespace meta_hpp
template < detail::class_kind Class >
class_bind<Class> class_(metadata_map metadata = {}) {
class_bind<Class> bind{std::move(metadata)};
if constexpr ( std::is_destructible_v<Class> ) {
bind.destructor_();
}
return bind;
return class_bind<Class>{std::move(metadata)};
}
template < detail::enum_kind Enum >

View File

@@ -17,6 +17,10 @@ namespace meta_hpp
: data_{detail::type_access(resolve_type<Class>())} {
data_->metadata.swap(metadata);
data_->metadata.merge(metadata);
if constexpr ( std::is_destructible_v<Class> ) {
destructor_();
}
}
template < detail::class_kind Class >