< cpp‎ | memory‎ | shared ptr
Utilities library
Type support (basic types, RTTI, type traits)
Dynamic memory management
Error handling
Program utilities
Variadic functions
Date and time
Function objects
Relational operators
Optional and any
Pairs and tuples
Swap, forward and move
Type operations
Defined in header <memory>
template< class T, class Alloc, class... Args >
shared_ptr<T> allocate_shared( const Alloc& alloc, Args&&... args );
(since C++11)

Constructs an object of type T and wraps it in a std::shared_ptr using args as the parameter list for the constructor of T.

All memory allocation is done using a copy of alloc, which satisfies the Allocator requirements. The copy constructor and the destructor of Alloc must not throw exceptions.


[edit] Parameters

alloc - The Allocator to use.
args... - list of arguments with which an instance of T will be constructed.

[edit] Return value

std::shared_ptr of an instance of type T.

[edit] Exceptions

Can throw the exceptions thrown from Alloc::allocate() or from the constructor of T. If an exception is thrown, this function has no effect.

[edit] Notes

This function typically allocates memory for the T object and for the shared_ptr's control block with a single memory allocation (it is a non-binding requirement in the Standard). In contrast, the declaration std::shared_ptr<T> p(new T(Args...)) performs at least two memory allocations, which may incur unnecessary overhead.

A copy of alloc is stored as part of the control block so that it can be used to deallocate it once both shared and weak reference counts reach zero.

[edit] See also

constructs new shared_ptr
(public member function)
creates a shared pointer that manages a new object
(function template)