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.
Paramet