std::ranges::construct_at
From cppreference.com
Defined in header <memory>
|
||
Call signature |
||
template< class T, class... Args > constexpr T* construct_at( T* location, Args&&... args ); |
(since C++20) | |
Creates a T
object initialized with the arguments in args at given address location.
Equivalent to
if constexpr (std::is_array_v<T>)
return ::new (voidify (*location)) T[1]();
else
return ::new (voidify (*location)) T(std::forward<Args>(args)...);
, except that construct_at
may be used in evaluation of constant expressions(until C++26).
When construct_at
is called in the evaluation of some constant expression expr, location must point to either a storage obtained by std::allocator<T>::allocate or an object whose lifetime began within the evaluation of expr.
This overload participates in overload resolution only if all following conditions are satisfied:
- std::is_unbounded_array_v<T> is false.
- ::new(