Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/memory/construct at"

From cppreference.com
< cpp‎ | memory
(simplify. use less standardese)
(~)
Line 9: Line 9:
 
{{dcl end}}
 
{{dcl end}}
  
Creates a {{tt|T}} object initialized with arguments {{tt|args...}} at given address {{tt|p}}. {{cpp/enable_if|{{c|::new(std::declval<void*>()) T(std::declval<Args>()...)}} is well-formed in evaluated context}}.
+
Creates a {{tt|T}} object initialized with arguments {{tt|args...}} at given address {{tt|p}}. {{cpp/enable_if|{{c|::new(std::declval<void*>()) T(std::declval<Args>()...)}} is well-formed in unevaluated context}}.
  
 
Equivalent to
 
Equivalent to

Revision as of 23:31, 6 February 2020

 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
Dynamic memory management
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Allocators
Garbage collection support
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)



 
Defined in header <memory>
template<class T, class... Args>
constexpr T* construct_at( T* p, Args&&... args );
(since C++20)

Creates a T object initialized with arguments args... at given address p. This overload participates in overload resolution only if ::new(std::declval<void*>()) T(std::declval<Args>()...) is well-formed in unevaluated context.

Equivalent to

return ::new (const_cast<void*>(static_cast<const volatile void*>(p)))
    T(std::forward<Args>(args)...);

except that construct_at may be used in evaluation of constant expressions.

When construct_at is called in the evaluation of some constant expression e, the argument p must point to either storaged obtained by std::allocator<T>::allocate or an object whose lifetime began within the evaluation of e.

Contents

Parameters

p - pointer to the uninitialized storage on which a T object will be constructed
args... - arguments used for initialization

Return value

p

Example

See also

[static]
constructs an object in the allocated storage
(function template) [edit]
destroys an object at a given address
(function template) [edit]