9#if __cpp_lib_start_lifetime_as >= 202207L
12using std::start_lifetime_as;
13using std::start_lifetime_as_array;
28 requires std::is_trivially_copyable_v<T>
30#if __cpp_lib_is_implicit_lifetime >= 202302L
31 static_assert(std::is_implicit_lifetime_v<T>);
33 return std::launder(
static_cast<T *
>(std::memmove(p, p, n *
sizeof(T))));
37 requires std::is_trivially_copyable_v<T>
39#if __cpp_lib_is_implicit_lifetime >= 202302L
40 static_assert(std::is_implicit_lifetime_v<T>);
44 return std::launder(
static_cast<const T *
>(p));
48 requires std::is_trivially_copyable_v<T>
54 requires std::is_trivially_copyable_v<T>
T * start_lifetime_as_array(void *p, size_t n) noexcept
T * start_lifetime_as(void *p) noexcept