15constexpr static auto type_name() noexcept ->
std::string_view {
16#if defined CO_ECS_PRETTY_FUNCTION
17 std::string_view pretty_function{ CO_ECS_PRETTY_FUNCTION };
18 auto prefix_pos = pretty_function.find_first_of(detail::PrettyFunctionPrefix);
19 auto suffix_pos = pretty_function.find_last_of(detail::prettyFunctionSuffix);
20 auto first = pretty_function.find_first_not_of(
' ', prefix_pos + 1);
21 auto value = pretty_function.substr(first, suffix_pos - first);
24 return typeid(T).name();
36 static void copy_constructor(
void* ptr,
void* rhs)
noexcept(std::is_nothrow_copy_constructible_v<T>) {
37 if constexpr (std::is_copy_constructible_v<T>) {
38 std::construct_at(
static_cast<T*
>(ptr), *
static_cast<T*
>(rhs));
40 throw std::invalid_argument(
"No copy constructor defined");
51 std::construct_at(
static_cast<T*
>(ptr), std::move(*
static_cast<T*
>(rhs)));
61 *
static_cast<T*
>(lhs) = std::move(*
static_cast<T*
>(rhs));
70 static_cast<T*
>(ptr)->~T();
Definition archetype.hpp:11