mirror of
https://github.com/BlackMATov/meta.hpp.git
synced 2025-12-14 11:40:35 +07:00
auto dtor registration
This commit is contained in:
@@ -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 >
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user