little cleanup

This commit is contained in:
BlackMATov
2023-08-10 23:24:06 +07:00
parent 3a5cab9eaa
commit 5b1928b173
3 changed files with 24 additions and 32 deletions

View File

@@ -22,19 +22,19 @@ namespace meta_hpp::detail
concept class_bind_destructor_kind //
= class_kind<Class> && std::is_destructible_v<Class>; //
template < typename Class, typename Base >
template < typename Base, typename Class >
concept class_bind_base_kind //
= class_kind<Class> && class_kind<Base> //
= class_kind<Base> && class_kind<Class> //
&& std::derived_from<Class, Base>; //
template < typename Class, typename Member >
template < typename Member, typename Class >
concept class_bind_member_kind //
= class_kind<Class> && member_pointer_kind<Member> //
= member_pointer_kind<Member> && class_kind<Class> //
&& std::is_same_v<Class, typename member_traits<Member>::class_type>; //
template < typename Class, typename Method >
template < typename Method, typename Class >
concept class_bind_method_kind //
= class_kind<Class> && method_pointer_kind<Method> //
= method_pointer_kind<Method> && class_kind<Class> //
&& std::is_same_v<Class, typename method_traits<Method>::class_type>; //
}
@@ -151,8 +151,7 @@ namespace meta_hpp
public:
explicit class_bind(metadata_map metadata);
template < detail::class_kind... Bases >
requires(... && detail::class_bind_base_kind<Class, Bases>)
template < detail::class_bind_base_kind<Class>... Bases >
class_bind& base_();
template < typename... Args, typename... Opts >
@@ -166,11 +165,10 @@ namespace meta_hpp
template < detail::function_pointer_kind Function, typename... Opts >
class_bind& function_(std::string name, Function function_ptr, Opts&&... opts);
template < detail::member_pointer_kind Member, typename... Opts >
template < detail::class_bind_member_kind<Class> Member, typename... Opts >
class_bind& member_(std::string name, Member member_ptr, Opts&&... opts);
template < detail::method_pointer_kind Method, typename... Opts >
requires detail::class_bind_method_kind<Class, Method>
template < detail::class_bind_method_kind<Class> Method, typename... Opts >
class_bind& method_(std::string name, Method method_ptr, Opts&&... opts);
template < typename Type >

View File

@@ -98,8 +98,7 @@ namespace meta_hpp
}
template < detail::class_kind Class >
template < detail::class_kind... Bases >
requires(... && detail::class_bind_base_kind<Class, Bases>)
template < detail::class_bind_base_kind<Class>... Bases >
class_bind<Class>& class_bind<Class>::base_() {
using namespace detail;
using namespace detail::class_bind_impl;
@@ -285,7 +284,7 @@ namespace meta_hpp
}
template < detail::class_kind Class >
template < detail::member_pointer_kind Member, typename... Opts >
template < detail::class_bind_member_kind<Class> Member, typename... Opts >
class_bind<Class>& class_bind<Class>::member_(std::string name, Member member_ptr, [[maybe_unused]] Opts&&... opts) {
using opts_t = detail::type_list<std::remove_cvref_t<Opts>...>;
using policy_t = detail::type_list_first_of_t<member_policy::is_family, member_policy::as_copy_t, opts_t>;
@@ -321,8 +320,7 @@ namespace meta_hpp
}
template < detail::class_kind Class >
template < detail::method_pointer_kind Method, typename... Opts >
requires detail::class_bind_method_kind<Class, Method>
template < detail::class_bind_method_kind<Class> Method, typename... Opts >
class_bind<Class>& class_bind<Class>::method_(std::string name, Method method_ptr, Opts&&... opts) {
using opts_t = detail::type_list<std::remove_cvref_t<Opts>...>;
using policy_t = detail::type_list_first_of_t<method_policy::is_family, method_policy::as_copy_t, opts_t>;