auto dtor registration

This commit is contained in:
BlackMATov
2022-12-26 23:41:35 +07:00
parent f1a2ead2cf
commit 5cb4d1b0e1
4 changed files with 123 additions and 2 deletions

View File

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

View File

@@ -12,6 +12,7 @@ namespace meta_hpp::detail
{
enum class destructor_flags : std::uint32_t {
is_noexcept = 1 << 0,
is_virtual = 1 << 1,
};
META_HPP_BITFLAGS_OPERATORS_DECL(destructor_flags)
@@ -31,6 +32,10 @@ namespace meta_hpp::detail
flags.set(destructor_flags::is_noexcept);
}
if constexpr ( std::has_virtual_destructor_v<Class> ) {
flags.set(destructor_flags::is_virtual);
}
return flags;
}
};