5#if __cpp_lib_start_lifetime_as >= 202207L
8using std::start_lifetime_as;
9using std::start_lifetime_as_array;
20 requires std::is_trivially_copyable_v<T>
22#if __cpp_lib_is_implicit_lifetime >= 202302L
23 static_assert(std::is_implicit_lifetime_v<T>);
25 return std::launder(
static_cast<T *
>(std::memmove(p, p, n *
sizeof(
T))));
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>);
35 return std::launder(
static_cast<const T *
>(p));
38 requires std::is_trivially_copyable_v<T>
43 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