Однако ответ SO предполагает, что его можно «эмулировать» в C++20 как следует:
Код: Выделить всё
template
requires (std::is_trivially_copyable_v && std::is_implicit_lifetime_v)
T* start_lifetime_as(void* p) noexcept
{
return std::launder(static_cast(std::memmove(p, p, sizeof(T))));
}
cppreference говорит об этом
Код: Выделить всё
template< class T >
T* start_lifetime_as_array( void* p, std::size_t n ) noexcept;
Но n известен только во время выполнения.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ray-in-c20
Мобильная версия