|
@@ -1324,6 +1324,15 @@ public:
|
|
|
return index < template_arity() ? meta_type{*ctx, node.templ.arg(internal::meta_context::from(*ctx), index)} : meta_type{};
|
|
return index < template_arity() ? meta_type{*ctx, node.templ.arg(internal::meta_context::from(*ctx), index)} : meta_type{};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @brief Checks if a type supports direct casting to another type.
|
|
|
|
|
+ * @return True if direct casting is allowed, false otherwise.
|
|
|
|
|
+ */
|
|
|
|
|
+ [[nodiscard]] bool can_cast(const meta_type &other) const noexcept {
|
|
|
|
|
+ // casting this is UB in all cases but we aren't going to use the resulting pointer, so...
|
|
|
|
|
+ return internal::try_cast(internal::meta_context::from(*ctx), node, other.node, this);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @brief Returns a range to visit registered top-level base meta types.
|
|
* @brief Returns a range to visit registered top-level base meta types.
|
|
|
* @return An iterable range to visit registered top-level base meta types.
|
|
* @return An iterable range to visit registered top-level base meta types.
|