fix apple-clang errors

This commit is contained in:
BlackMATov
2023-12-27 23:48:49 +07:00
parent 43b144be27
commit ddf9481647
6 changed files with 28 additions and 35 deletions

View File

@@ -126,10 +126,6 @@ namespace meta_hpp
return id_type{data_};
}
[[nodiscard]] explicit operator id_type() const noexcept {
return get_id();
}
[[nodiscard]] type_kind get_kind() const noexcept {
return data_->kind;
}

View File

@@ -27,19 +27,19 @@ namespace meta_hpp::detail
, size{class_traits<Class>::size}
, align{class_traits<Class>::align}
, argument_types{resolve_types(typename class_traits<Class>::argument_types{})} {
struct {
class_list base_classes;
deep_upcasts_t deep_upcasts;
} new_base_data;
class_list new_base_classes;
deep_upcasts_t new_deep_upcasts;
const auto add_new_base = [&new_base_data]<class_kind Base, class_kind Derived>(auto&& recur) {
const auto add_new_base = [&]<class_kind Base, class_kind Derived>(auto&& recur) {
const class_type& base_class = resolve_type<Base>();
new_base_data.deep_upcasts.push_back(upcast_func_t{
.target{base_class},
new_deep_upcasts.push_back(upcast_func_t{
.target{base_class.get_id()},
.upcast{[]() {
if constexpr ( requires { static_cast<Base*>(std::declval<Class*>()); } ) {
return +[](void* from) -> void* { return static_cast<Base*>(static_cast<Class*>(from)); };
return +[](void* from) -> void* { //
return static_cast<Base*>(static_cast<Class*>(from));
};
} else {
return nullptr;
}
@@ -47,16 +47,16 @@ namespace meta_hpp::detail
});
if constexpr ( std::is_same_v<Class, Derived> ) {
new_base_data.base_classes.push_back(base_class);
new_base_classes.push_back(base_class);
}
recur.template operator()<Base>(recur);
};
const auto add_new_bases = [&add_new_base]<class_kind Derived>(auto&& recur) {
const auto add_new_bases = [&]<class_kind Derived>(auto&& recur) {
if constexpr ( check_base_info_enabled<Derived> ) {
using meta_base_info = typename Derived::meta_base_info;
meta_base_info::for_each([&add_new_base, &recur]<class_kind Base>() {
meta_base_info::for_each([&]<class_kind Base>() { //
add_new_base.template operator()<Base, Derived>(recur);
});
} else {
@@ -66,8 +66,8 @@ namespace meta_hpp::detail
add_new_bases.template operator()<Class>(add_new_bases);
base_classes.swap(new_base_data.base_classes);
deep_upcasts.swap(new_base_data.deep_upcasts);
base_classes.swap(new_base_classes);
deep_upcasts.swap(new_deep_upcasts);
}
}