Construct a new std::experimental::shared_ptr
object that owns
the supplied pointer and deleter, using the supplied allocator to allocate
and deallocate the control block.
template<class Target,class Deleter,class Allocator> explicit shared_ptr(Target* p,Deleter d,Allocator a);
Target*
is implicitly convertible to T*
. d(p)
is well-formed. Deleter
is CopyConstructible
.
Allocator
is meets
the allocator requirements.
Construct a new std::experimental::shared_ptr
instance that
owns p
and a copy
of d
, using a copy
of a
to allocate
the control block. A copy of 'a' will then be used to deallocate
the control block when the last std::experimental::shared_ptr
instance referencing
this is destroyed or reassigned.
If sp
is the newly-constructed
std::experimental::shared_ptr
object, sp.unique()
and sp.get()==static_cast<T*>(p)
and get_deleter<Deleter>(sp)!=0
.
This allows you to construct a std::experimental::shared_ptr
for which
get
member function is
nullptr
, but use_count
member function
is non-zero.
Any exception thrown by the allocator if memory for the internal
data structures of std::experimental::shared_ptr
could not be
allocated.
If an exception is thrown, d(p)
is invoked.
#include <experimental/atomic>