8#ifndef INCLUDED_BSLMA_MANAGEDPTR
9#define INCLUDED_BSLMA_MANAGEDPTR
1024#include <bslscm_version.h>
1058#if BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1064# define COMPILING_BSLMA_MANAGEDPTR_H
1066# undef COMPILING_BSLMA_MANAGEDPTR_H
1091template <
class TARGET_TYPE>
1098 TARGET_TYPE *d_cast_p;
1133 TARGET_TYPE *
target()
const;
1172template <
class TARGET_TYPE>
1215 static void *stripBasePointerType(TARGET_TYPE *
ptr);
1221 template <
class MANAGED_TYPE>
1222 static void *stripCompletePointerType(MANAGED_TYPE *
ptr);
1236 template <
class MANAGED_TYPE>
1244 template <
class MANAGED_TYPE>
1252 template <
class MANAGED_TYPE,
class COOKIE_TYPE>
1260 template <
class MANAGED_TYPE>
1262 template <
class COOKIE_TYPE>
1281 template <
class ALIASED_TYPE>
1307 template <
class MANAGED_TYPE>
1335#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1336 template <
class BDE_OTHER_TYPE>
1343#elif defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
1345 template <
class BDE_OTHER_TYPE>
1349 template <
class BDE_OTHER_TYPE>
1369 template <
class ALIASED_TYPE>
1371 template <
class ALIASED_TYPE>
1372#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1395 template <
class MANAGED_TYPE,
class FACTORY_TYPE>
1408 template <
class FACTORY_TYPE>
1438 template <
class MANAGED_TYPE>
1441#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1468 template <
class MANAGED_TYPE,
class MANAGED_BASE>
1471 void (*
deleter)(MANAGED_BASE *,
void *));
1496 template <
class MANAGED_TYPE,
1501 COOKIE_TYPE *cookie,
1502 void (*
deleter)(MANAGED_BASE *, COOKIE_BASE *));
1532#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1533 template <
class BDE_OTHER_TYPE>
1538#elif defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
1540 template <
class BDE_OTHER_TYPE>
1545 template <
class BDE_OTHER_TYPE>
1578 template <
class REFERENCED_TYPE>
1601 template <
class MANAGED_TYPE>
1622 template <
class MANAGED_TYPE,
class FACTORY_TYPE>
1623 void load(MANAGED_TYPE *
ptr, FACTORY_TYPE *factory);
1640 template <
class MANAGED_TYPE>
1650#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1651 template <
class MANAGED_TYPE,
class COOKIE_TYPE>
1654 template <
class MANAGED_TYPE,
class MANAGED_BASE>
1657 void (*
deleter)(MANAGED_BASE *,
void *));
1682 template <
class MANAGED_TYPE,
1687 COOKIE_TYPE *cookie,
1688 void (*
deleter)(MANAGED_BASE *, COOKIE_BASE *));
1706 template <
class ALIASED_TYPE>
1748 operator BoolType()
const;
1781template <
class TARGET_TYPE>
1805 template <
class ELEMENT_TYPE>
1808#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1821 template <
class ELEMENT_TYPE,
class... ARGS>
1824 template <
class ELEMENT_TYPE,
class ALLOCATOR,
class... ARGS>
1840 template <
class ELEMENT_TYPE,
class... ARGS>
1860template <
class TARGET_TYPE>
1866 static void deleter(
void *,
void *);
1881template <
class TARGET_TYPE,
class FACTORY_TYPE>
1884 bsl::is_convertible<FACTORY_TYPE *, Allocator *>::value,
1885 ManagedPtr_FactoryDeleter<TARGET_TYPE, Allocator>,
1886 ManagedPtr_FactoryDeleter<TARGET_TYPE, FACTORY_TYPE> > {
1897template <
class MANAGED_TYPE>
1904 static void deleter(
void *ptr,
void *);
1916template <
class TARGET_TYPE>
1919 TARGET_TYPE *target)
1926template <
class TARGET_TYPE>
1934template <
class TARGET_TYPE>
1941template <
class TARGET_TYPE>
1952template <
class TARGET_TYPE>
1959template <
class TARGET_TYPE>
1966#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES)
1967template <
class TARGET_TYPE>
1976template <
class TARGET_TYPE>
1983template <
class TARGET_TYPE>
1984template <
class MANAGED_TYPE>
1987ManagedPtr<TARGET_TYPE>::stripCompletePointerType(MANAGED_TYPE *ptr)
1993template <
class TARGET_TYPE>
1994template <
class MANAGED_TYPE>
1996void ManagedPtr<TARGET_TYPE>::loadImp(MANAGED_TYPE *ptr,
1998 DeleterFunc deleter)
2004 d_members.
set(stripCompletePointerType(ptr), cookie, deleter);
2009template <
class TARGET_TYPE>
2016template <
class TARGET_TYPE>
2023template <
class TARGET_TYPE>
2024template <
class MANAGED_TYPE>
2027: d_members(stripCompletePointerType(ptr),
2030 stripBasePointerType(ptr))
2035template <
class TARGET_TYPE>
2039: d_members(*ref.base())
2041 d_members.
setAliasPtr(stripBasePointerType(ref.target()));
2044template <
class TARGET_TYPE>
2047: d_members(original.d_members)
2051template <
class TARGET_TYPE>
2055: d_members(MoveUtil::access(original).d_members)
2059#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2060 template <
class TARGET_TYPE>
2061 template <
class BDE_OTHER_TYPE>
2066 TARGET_TYPE *>::value,
2069 : d_members(original.d_members)
2070#elif defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
2072 template <
class TARGET_TYPE>
2073 template <
class BDE_OTHER_TYPE>
2078 : d_members(MoveUtil::access(original).d_members)
2080 template <
class TARGET_TYPE>
2081 template <
class BDE_OTHER_TYPE>
2086 TARGET_TYPE *>::value,
2089 : d_members(MoveUtil::access(original).d_members)
2094 #if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
2096 TARGET_TYPE *>::value));
2101 d_members.setAliasPtr(
2102 stripBasePointerType(
2103 static_cast<TARGET_TYPE *
>(
2104 static_cast<BDE_OTHER_TYPE *
>(
2105 d_members.pointer()))));
2109template <
class TARGET_TYPE>
2110template <
class ALIASED_TYPE>
2119 d_members.move(&alias.d_members);
2120 d_members.setAliasPtr(stripBasePointerType(
ptr));
2124template <
class TARGET_TYPE>
2125template <
class ALIASED_TYPE>
2128#
if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2141 d_members.move(&lvalue.d_members);
2142 d_members.setAliasPtr(stripBasePointerType(
ptr));
2146template <
class TARGET_TYPE>
2147template <
class MANAGED_TYPE,
class FACTORY_TYPE>
2150: d_members(stripCompletePointerType(ptr),
2153 FACTORY_TYPE>::type::deleter,
2154 stripBasePointerType(ptr))
2160template <
class TARGET_TYPE>
2167template <
class TARGET_TYPE>
2168template <
class FACTORY_TYPE>
2175template <
class TARGET_TYPE>
2180: d_members(stripBasePointerType(ptr), cookie, deleter)
2185template <
class TARGET_TYPE>
2186template <
class MANAGED_TYPE>
2191: d_members(stripCompletePointerType(ptr),
2194 stripBasePointerType(ptr))
2201#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2202template <
class TARGET_TYPE>
2203template <
class MANAGED_TYPE,
class MANAGED_BASE>
2208 void (*deleter)(MANAGED_BASE *,
void *))
2209: d_members(stripCompletePointerType(ptr),
2212 stripBasePointerType(ptr))
2216 const MANAGED_BASE *>::value));
2221template <
class TARGET_TYPE>
2222template <
class MANAGED_TYPE,
2229 COOKIE_TYPE *cookie,
2230 void (*deleter)(MANAGED_BASE *, COOKIE_BASE *))
2231: d_members(stripCompletePointerType(ptr),
2232 static_cast<COOKIE_BASE *>(cookie),
2234 stripBasePointerType(ptr))
2238 const MANAGED_BASE *>::value));
2252template <
class TARGET_TYPE>
2256 d_members.runDeleter();
2260template <
class TARGET_TYPE>
2265 d_members.moveAssign(&rhs.d_members);
2269template <
class TARGET_TYPE>
2276 d_members.moveAssign(&lvalue.d_members);
2280#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2281 template <
class TARGET_TYPE>
2282 template <
class BDE_OTHER_TYPE>
2289#elif defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
2291 template <
class TARGET_TYPE>
2292 template <
class BDE_OTHER_TYPE>
2299 template <
class TARGET_TYPE>
2300 template <
class BDE_OTHER_TYPE>
2312 #if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
2314 TARGET_TYPE *>::value));
2318 d_members.moveAssign(&lvalue.d_members);
2322 d_members.setAliasPtr(
2323 stripBasePointerType(
2324 static_cast<TARGET_TYPE *
>(
2325 static_cast<BDE_OTHER_TYPE *
>(
2326 d_members.pointer()))));
2331template <
class TARGET_TYPE>
2337 d_members.moveAssign(ref.base());
2338 d_members.setAliasPtr(stripBasePointerType(ref.target()));
2342template <
class TARGET_TYPE>
2351template <
class TARGET_TYPE>
2352template <
class REFERENCED_TYPE>
2357 REFERENCED_TYPE *>::value));
2360 static_cast<REFERENCED_TYPE *
>(
2361 static_cast<TARGET_TYPE *
>(d_members.pointer())));
2364template <
class TARGET_TYPE>
2371template <
class TARGET_TYPE>
2372template <
class MANAGED_TYPE>
2381 &DeleterFactory::deleter);
2384template <
class TARGET_TYPE>
2385template <
class MANAGED_TYPE,
class FACTORY_TYPE>
2396 this->loadImp(ptr,
static_cast<void *
>(factory), &DeleterFactory::deleter);
2399template <
class TARGET_TYPE>
2400template <
class MANAGED_TYPE>
2409 this->loadImp(ptr, cookie, deleter);
2412template <
class TARGET_TYPE>
2419#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2420template <
class TARGET_TYPE>
2421template <
class MANAGED_TYPE,
class COOKIE_TYPE>
2424 COOKIE_TYPE *cookie,
2430 this->loadImp(ptr,
static_cast<void *
>(cookie), deleter);
2433template <
class TARGET_TYPE>
2434template <
class MANAGED_TYPE,
class MANAGED_BASE>
2439 void (*deleter)(MANAGED_BASE *,
void *))
2446 this->loadImp(ptr, cookie,
reinterpret_cast<DeleterFunc>(deleter));
2449template <
class TARGET_TYPE>
2450template <
class MANAGED_TYPE,
2457 COOKIE_TYPE *cookie,
2458 void (*deleter)(MANAGED_BASE *, COOKIE_BASE *))
2466 static_cast<void *
>(
static_cast<COOKIE_BASE *
>(cookie)),
2471template <
class TARGET_TYPE>
2472template <
class ALIASED_TYPE>
2478 if (ptr && alias.d_members.
pointer()) {
2479 d_members.moveAssign(&alias.d_members);
2480 d_members.setAliasPtr(stripBasePointerType(ptr));
2483 d_members.runDeleter();
2488template <
class TARGET_TYPE>
2494 TARGET_TYPE *p = get();
2500 ResultType result = { p, d_members.deleter() };
2508template <
class TARGET_TYPE>
2513 TARGET_TYPE *result = get();
2519 *deleter = d_members.
deleter();
2525template <
class TARGET_TYPE>
2529 d_members.runDeleter();
2533template <
class TARGET_TYPE>
2537 d_members.swap(other.d_members);
2541template <
class TARGET_TYPE>
2545 return !d_members.pointer();
2548template <
class TARGET_TYPE>
2552 return d_members.pointer();
2555template <
class TARGET_TYPE>
2557#if defined(BSLS_PLATFORM_CMP_IBM)
2563 return d_members.pointer()
2568template <
class TARGET_TYPE>
2575 return *
static_cast<TARGET_TYPE *
>(d_members.pointer());
2578template <
class TARGET_TYPE>
2582 return static_cast<TARGET_TYPE *
>(d_members.pointer());
2585template <
class TARGET_TYPE>
2591 return d_members.deleter();
2594template <
class TARGET_TYPE>
2598 return static_cast<TARGET_TYPE *
>(d_members.pointer());
2601template <
class TARGET_TYPE>
2609template <
class TARGET_TYPE>
2620template <
class ELEMENT_TYPE>
2628 static_cast<ELEMENT_TYPE *
>(
object));
2631#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
2633template <
class ELEMENT_TYPE,
class ALLOCATOR,
class... ARGS>
2639 return allocateManaged<ELEMENT_TYPE>(
2640 allocator.mechanism(),
2644template <
class ELEMENT_TYPE,
class... ARGS>
2654 UnqualElem *objPtr =
2655 bslma::AllocatorUtil::allocateObject<UnqualElem>(defaultAllocator);
2658 defaultAllocator, objPtr);
2667 &allocatorDeleter<UnqualElem>);
2670template <
class ELEMENT_TYPE,
class... ARGS>
2679 ELEMENT_TYPE *objPtr = bslma::AllocatorUtil::newObject<UnqualElem>(
2685 &allocatorDeleter<UnqualElem>);
2695template <
class TARGET_TYPE>
2706template <
class MANAGED_TYPE>
2710 delete reinterpret_cast<MANAGED_TYPE *
>(ptr);
2721template <
class TARGET_TYPE>
2726template <
class TARGET_TYPE>
2736template <
class TARGET_TYPE>
Definition bslma_allocator.h:545
Definition bslma_deallocateobjectproctor.h:273
PtrType release()
Definition bslma_deallocateobjectproctor.h:442
Definition bslma_managedptrdeleter.h:114
void(* Deleter)(void *managedObject, void *cookie)
Deleter function prototype used to destroy the managed pointer.
Definition bslma_managedptrdeleter.h:120
Deleter deleter() const
Return the deleter function associated with this deleter.
Definition bslma_managedptrdeleter.h:265
Definition bslma_managedptr_members.h:87
void setAliasPtr(void *alias)
Definition bslma_managedptr_members.h:308
void runDeleter() const
Definition bslma_managedptr_members.h:331
void set(void *object, void *factory, DeleterFunc deleter)
Definition bslma_managedptr_members.h:294
void * pointer() const
Definition bslma_managedptr_members.h:325
Definition bslma_managedptr.h:1092
ManagedPtr_Ref(const ManagedPtr_Ref &original)=default
~ManagedPtr_Ref()
Definition bslma_managedptr.h:1928
ManagedPtr_Ref & operator=(const ManagedPtr_Ref &original)=default
TARGET_TYPE * target() const
Return a pointer to the referenced object.
Definition bslma_managedptr.h:1943
ManagedPtr_Ref(ManagedPtr_Members *base, TARGET_TYPE *target)
Definition bslma_managedptr.h:1918
ManagedPtr_Members * base() const
Return a pointer to the managed state of a ManagedPtr object.
Definition bslma_managedptr.h:1936
Definition bslma_managedptr.h:1173
ManagedPtr(TARGET_TYPE *ptr, void *cookie, DeleterFunc deleter)
Definition bslma_managedptr.h:2177
bool operator==(bsl::nullptr_t) const
Return true if this managed pointer is empty, and false otherwise.
Definition bslma_managedptr.h:2543
ManagedPtr(bslmf::MovableRef< ManagedPtr< BDE_OTHER_TYPE > > original, typename bsl::enable_if< bsl::is_convertible< BDE_OTHER_TYPE *, TARGET_TYPE * >::value, ManagedPtr_TraitConstraint >::type=ManagedPtr_TraitConstraint()) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2083
TARGET_TYPE * get() const
Definition bslma_managedptr.h:2596
void load(bsl::nullptr_t=0, void *cookie=0, DeleterFunc deleter=0)
Definition bslma_managedptr.h:2414
void load(MANAGED_TYPE *ptr, FACTORY_TYPE *factory)
Definition bslma_managedptr.h:2387
TARGET_TYPE * release(ManagedPtrDeleter *deleter)
Definition bslma_managedptr.h:2509
ManagedPtr(ManagedPtr< ALIASED_TYPE > &alias, TARGET_TYPE *ptr)
Definition bslma_managedptr.h:2112
ManagedPtr(bsl::nullptr_t, FACTORY_TYPE *factory)
Definition bslma_managedptr.h:2170
ManagedPtr(MANAGED_TYPE *ptr, COOKIE_TYPE *cookie, void(*deleter)(MANAGED_BASE *, COOKIE_BASE *))
Definition bslma_managedptr.h:2227
TARGET_TYPE * ptr() const
Definition bslma_managedptr.h:2603
~ManagedPtr()
Definition bslma_managedptr.h:2254
bslmf::AddReference< TARGET_TYPE >::Type operator*() const
Definition bslma_managedptr.h:2571
const ManagedPtrDeleter & deleter() const
Definition bslma_managedptr.h:2587
ManagedPtr(bsl::nullptr_t)
Definition bslma_managedptr.h:2018
ManagedPtr & operator=(ManagedPtr_Ref< TARGET_TYPE > ref) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2334
ManagedPtr(MANAGED_TYPE *ptr)
Definition bslma_managedptr.h:2026
void load(MANAGED_TYPE *ptr, COOKIE_TYPE *cookie, void(*deleter)(MANAGED_BASE *, COOKIE_BASE *))
Definition bslma_managedptr.h:2455
void swap(ManagedPtr &other)
Definition bslma_managedptr.h:2535
ManagedPtr(bsl::nullptr_t, bsl::nullptr_t)
Definition bslma_managedptr.h:2162
void load(MANAGED_TYPE *ptr)
Definition bslma_managedptr.h:2374
ManagedPtr & operator=(bslmf::MovableRef< ManagedPtr > rhs) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2272
ManagedPtr(MANAGED_TYPE *ptr, void *cookie, DeleterFunc deleter)
Definition bslma_managedptr.h:2188
ManagedPtr()
Create an empty managed pointer.
Definition bslma_managedptr.h:2011
void load(MANAGED_TYPE *ptr, void *cookie, DeleterFunc deleter)
Definition bslma_managedptr.h:2402
ManagedPtr(MANAGED_TYPE *ptr, FACTORY_TYPE *factory)
Definition bslma_managedptr.h:2149
void load(MANAGED_TYPE *ptr, COOKIE_TYPE *cookie, DeleterFunc deleter)
Definition bslma_managedptr.h:2423
ManagedPtr & operator=(bsl::nullptr_t)
Definition bslma_managedptr.h:2345
void load(MANAGED_TYPE *ptr, void *cookie, void(*deleter)(MANAGED_BASE *, void *))
Definition bslma_managedptr.h:2436
ManagedPtr(MANAGED_TYPE *ptr, void *cookie, void(*deleter)(MANAGED_BASE *, void *))
Definition bslma_managedptr.h:2205
TARGET_TYPE * operator->() const
Definition bslma_managedptr.h:2580
ManagedPtr(bslmf::MovableRef< ManagedPtr > original) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2053
void clear()
Definition bslma_managedptr.h:2366
bsl::enable_if< bsl::is_convertible< BDE_OTHER_TYPE *, TARGET_TYPE * >::value, ManagedPtr< TARGET_TYPE > >::type & operator=(bslmf::MovableRef< ManagedPtr< BDE_OTHER_TYPE > > rhs) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2305
ManagedPtr & operator=(ManagedPtr &rhs) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2263
TARGET_TYPE element_type
Alias to the TARGET_TYPE template parameter.
Definition bslma_managedptr.h:1183
ManagedPtr(bslmf::MovableRef< ManagedPtr< ALIASED_TYPE > > alias, TARGET_TYPE *ptr)
Definition bslma_managedptr.h:2127
ManagedPtr_PairProxy< TARGET_TYPE, ManagedPtrDeleter > release()
Definition bslma_managedptr.h:2490
ManagedPtr(ManagedPtr_Ref< TARGET_TYPE > ref) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2037
friend class ManagedPtr
Definition bslma_managedptr.h:1282
bool operator!=(bsl::nullptr_t) const
Return false if this managed pointer is empty, and true otherwise.
Definition bslma_managedptr.h:2550
ManagedPtr(ManagedPtr &original) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2046
void reset()
Definition bslma_managedptr.h:2527
void loadAlias(ManagedPtr< ALIASED_TYPE > &alias, TARGET_TYPE *ptr)
Definition bslma_managedptr.h:2473
ManagedPtrDeleter::Deleter DeleterFunc
Definition bslma_managedptr.h:1180
Definition bslmf_movableref.h:752
static BoolType trueValue()
Return a value that converts to the bool value true.
Definition bsls_unspecifiedbool.h:223
int UnspecifiedBool::* BoolType
Definition bsls_unspecifiedbool.h:190
static BoolType falseValue()
Return a value that converts to the bool value false.
Definition bsls_unspecifiedbool.h:215
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:231
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:674
Definition bdlat_valuetypefunctions.h:939
BloombergLP::bsls::Nullptr_Impl::Type nullptr_t
Definition bsls_nullptr.h:283
Definition baljsn_encoder_testtypes.h:76
Definition bdlbb_blob.h:579
Definition bslmf_conditional.h:123
ManagedPtr_FactoryDeleter< TARGET_TYPE, Allocator > type
Definition bslmf_conditional.h:127
Definition bslmf_enableif.h:530
Definition bslmf_isconvertible.h:875
Definition bslmf_isnothrowmoveconstructible.h:361
Definition bslmf_isvoid.h:138
remove_const< typenameremove_volatile< t_TYPE >::type >::type type
Definition bslmf_removecv.h:128
static void deleteObject(const t_ALLOCATOR &allocator, t_POINTER p)
Definition bslma_allocatorutil.h:959
static Allocator * allocator(Allocator *basicAllocator=0)
Definition bslma_default.h:913
static Allocator * defaultAllocator()
Definition bslma_default.h:905
Definition bslma_managedptr.h:1861
static void deleter(void *, void *)
Deleter function that does nothing.
Definition bslma_managedptr.h:2697
Definition bslma_managedptr.h:1792
static ManagedPtr< ELEMENT_TYPE > makeManaged(ARGS &&... args)
Definition bslma_managedptr.h:2646
static void allocatorDeleter(void *object, void *allocator)
Definition bslma_managedptr.h:2622
static ManagedPtr< ELEMENT_TYPE > allocateManaged(bslma::Allocator *allocator, ARGS &&... args)
Definition bslma_managedptr.h:2673
static void noOpDeleter(void *, void *)
Deleter function that does nothing.
Definition bslma_managedptr.h:1898
static void deleter(void *ptr, void *)
Definition bslma_managedptr.h:2708
Definition bslma_managedptr.h:1886
Definition bslma_managedptr_factorydeleter.h:73
Definition bslma_managedptr_pairproxy.h:83
Definition bslma_managedptr.h:1144
static BSLS_KEYWORD_CONSTEXPR void * voidify(TYPE *address) BSLS_KEYWORD_NOEXCEPT
Definition bslma_pointerutil.h:350
bsl::add_lvalue_reference< t_TYPE >::type Type
Definition bslmf_addreference.h:191
Definition bslmf_haspointersemantics.h:83
Definition bslmf_isbitwisemoveable.h:718
Definition bslmf_movableref.h:795