8#ifndef INCLUDED_BSLMA_MANAGEDPTR
9#define INCLUDED_BSLMA_MANAGEDPTR
1022#include <bslscm_version.h>
1055#if BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1059# define COMPILING_BSLMA_MANAGEDPTR_H
1061# undef COMPILING_BSLMA_MANAGEDPTR_H
1079 template <
class TYPE>
1085 template <
class TYPE>
1104template <
class TARGET_TYPE>
1111 TARGET_TYPE *d_cast_p;
1144 TARGET_TYPE *
target()
const;
1181template <
class TARGET_TYPE>
1223 static void *stripBasePointerType(TARGET_TYPE *
ptr);
1229 template <
class MANAGED_TYPE>
1230 static void *stripCompletePointerType(MANAGED_TYPE *
ptr);
1243 template <
class MANAGED_TYPE>
1251 template <
class MANAGED_TYPE>
1259 template <
class MANAGED_TYPE,
class COOKIE_TYPE>
1267 template <
class MANAGED_TYPE>
1269 template <
class COOKIE_TYPE>
1287 template <
class ALIASED_TYPE>
1310 template <
class MANAGED_TYPE>
1338#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1339 template <
class BDE_OTHER_TYPE>
1346#elif defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
1348 template <
class BDE_OTHER_TYPE>
1352 template <
class BDE_OTHER_TYPE>
1370 template <
class ALIASED_TYPE>
1372 template <
class ALIASED_TYPE>
1373#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1394 template <
class MANAGED_TYPE,
class FACTORY_TYPE>
1405 template <
class FACTORY_TYPE>
1432 template <
class MANAGED_TYPE>
1435#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1459 template <
class MANAGED_TYPE,
class MANAGED_BASE>
1462 void (*
deleter)(MANAGED_BASE *,
void *));
1484 template <
class MANAGED_TYPE,
1489 COOKIE_TYPE *cookie,
1490 void (*
deleter)(MANAGED_BASE *, COOKIE_BASE *));
1520#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1521 template <
class BDE_OTHER_TYPE>
1526#elif defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
1528 template <
class BDE_OTHER_TYPE>
1533 template <
class BDE_OTHER_TYPE>
1565 template <
class REFERENCED_TYPE>
1587 template <
class MANAGED_TYPE>
1606 template <
class MANAGED_TYPE,
class FACTORY_TYPE>
1607 void load(MANAGED_TYPE *
ptr, FACTORY_TYPE *factory);
1622 template <
class MANAGED_TYPE>
1631#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1632 template <
class MANAGED_TYPE,
class COOKIE_TYPE>
1635 template <
class MANAGED_TYPE,
class MANAGED_BASE>
1638 void (*
deleter)(MANAGED_BASE *,
void *));
1660 template <
class MANAGED_TYPE,
1665 COOKIE_TYPE *cookie,
1666 void (*
deleter)(MANAGED_BASE *, COOKIE_BASE *));
1682 template <
class ALIASED_TYPE>
1717 operator BoolType()
const;
1748template <
class TARGET_TYPE>
1764#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1776 template <
class ELEMENT_TYPE,
class... ARGS>
1779 template <
class ELEMENT_TYPE,
class ALLOCATOR,
class... ARGS>
1794 template <
class ELEMENT_TYPE,
class... ARGS>
1811template <
class TARGET_TYPE>
1817 static void deleter(
void *,
void *);
1832template <
class TARGET_TYPE,
class FACTORY_TYPE>
1835 bsl::is_convertible<FACTORY_TYPE *, Allocator *>::value,
1836 ManagedPtr_FactoryDeleter<TARGET_TYPE, Allocator>,
1837 ManagedPtr_FactoryDeleter<TARGET_TYPE, FACTORY_TYPE> > {
1846template <
class MANAGED_TYPE>
1853 static void deleter(
void *ptr,
void *);
1866template <
class TYPE>
1870 return static_cast<void *
>(
1874template <
class TYPE>
1879 return const_cast<TYPE *
>(address);
1887template <
class TARGET_TYPE>
1890 TARGET_TYPE *target)
1897template <
class TARGET_TYPE>
1905template <
class TARGET_TYPE>
1912template <
class TARGET_TYPE>
1923template <
class TARGET_TYPE>
1930template <
class TARGET_TYPE>
1937#if defined(BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES)
1938template <
class TARGET_TYPE>
1947template <
class TARGET_TYPE>
1951 return const_cast<void *
>(
static_cast<const void *
>(ptr));
1954template <
class TARGET_TYPE>
1955template <
class MANAGED_TYPE>
1958ManagedPtr<TARGET_TYPE>::stripCompletePointerType(MANAGED_TYPE *ptr)
1960 return const_cast<void *
>(
static_cast<const void *
>(ptr));
1964template <
class TARGET_TYPE>
1965template <
class MANAGED_TYPE>
1967void ManagedPtr<TARGET_TYPE>::loadImp(MANAGED_TYPE *ptr,
1969 DeleterFunc deleter)
1975 d_members.
set(stripCompletePointerType(ptr), cookie, deleter);
1980template <
class TARGET_TYPE>
1987template <
class TARGET_TYPE>
1988template <
class MANAGED_TYPE>
1991: d_members(stripCompletePointerType(ptr),
1994 stripBasePointerType(ptr))
1999template <
class TARGET_TYPE>
2003: d_members(*ref.base())
2005 d_members.
setAliasPtr(stripBasePointerType(ref.target()));
2008template <
class TARGET_TYPE>
2011: d_members(original.d_members)
2015template <
class TARGET_TYPE>
2019: d_members(MoveUtil::access(original).d_members)
2023#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2024 template <
class TARGET_TYPE>
2025 template <
class BDE_OTHER_TYPE>
2030 TARGET_TYPE *>::value,
2033 : d_members(original.d_members)
2034#elif defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
2036 template <
class TARGET_TYPE>
2037 template <
class BDE_OTHER_TYPE>
2042 : d_members(MoveUtil::access(original).d_members)
2044 template <
class TARGET_TYPE>
2045 template <
class BDE_OTHER_TYPE>
2050 TARGET_TYPE *>::value,
2053 : d_members(MoveUtil::access(original).d_members)
2058 #if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
2060 TARGET_TYPE *>::value));
2065 d_members.setAliasPtr(
2066 stripBasePointerType(
2067 static_cast<TARGET_TYPE *
>(
2068 static_cast<BDE_OTHER_TYPE *
>(
2069 d_members.pointer()))));
2073template <
class TARGET_TYPE>
2074template <
class ALIASED_TYPE>
2083 d_members.move(&alias.d_members);
2084 d_members.setAliasPtr(stripBasePointerType(
ptr));
2088template <
class TARGET_TYPE>
2089template <
class ALIASED_TYPE>
2092#
if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2105 d_members.move(&lvalue.d_members);
2106 d_members.setAliasPtr(stripBasePointerType(
ptr));
2110template <
class TARGET_TYPE>
2111template <
class MANAGED_TYPE,
class FACTORY_TYPE>
2114: d_members(stripCompletePointerType(ptr),
2117 FACTORY_TYPE>::type::deleter,
2118 stripBasePointerType(ptr))
2124template <
class TARGET_TYPE>
2131template <
class TARGET_TYPE>
2132template <
class FACTORY_TYPE>
2139template <
class TARGET_TYPE>
2144: d_members(stripBasePointerType(ptr), cookie, deleter)
2149template <
class TARGET_TYPE>
2150template <
class MANAGED_TYPE>
2155: d_members(stripCompletePointerType(ptr),
2158 stripBasePointerType(ptr))
2165#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2166template <
class TARGET_TYPE>
2167template <
class MANAGED_TYPE,
class MANAGED_BASE>
2172 void (*deleter)(MANAGED_BASE *,
void *))
2173: d_members(stripCompletePointerType(ptr),
2176 stripBasePointerType(ptr))
2180 const MANAGED_BASE *>::value));
2185template <
class TARGET_TYPE>
2186template <
class MANAGED_TYPE,
2193 COOKIE_TYPE *cookie,
2194 void (*deleter)(MANAGED_BASE *, COOKIE_BASE *))
2195: d_members(stripCompletePointerType(ptr),
2196 static_cast<COOKIE_BASE *>(cookie),
2198 stripBasePointerType(ptr))
2202 const MANAGED_BASE *>::value));
2216template <
class TARGET_TYPE>
2220 d_members.runDeleter();
2224template <
class TARGET_TYPE>
2229 d_members.moveAssign(&rhs.d_members);
2233template <
class TARGET_TYPE>
2240 d_members.moveAssign(&lvalue.d_members);
2244#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2245 template <
class TARGET_TYPE>
2246 template <
class BDE_OTHER_TYPE>
2253#elif defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
2255 template <
class TARGET_TYPE>
2256 template <
class BDE_OTHER_TYPE>
2263 template <
class TARGET_TYPE>
2264 template <
class BDE_OTHER_TYPE>
2276 #if defined(BSLS_PLATFORM_CMP_SUN) && BSLS_PLATFORM_CMP_VERSION < 0x5130
2278 TARGET_TYPE *>::value));
2282 d_members.moveAssign(&lvalue.d_members);
2286 d_members.setAliasPtr(
2287 stripBasePointerType(
2288 static_cast<TARGET_TYPE *
>(
2289 static_cast<BDE_OTHER_TYPE *
>(
2290 d_members.pointer()))));
2295template <
class TARGET_TYPE>
2301 d_members.moveAssign(ref.base());
2302 d_members.setAliasPtr(stripBasePointerType(ref.target()));
2306template <
class TARGET_TYPE>
2315template <
class TARGET_TYPE>
2316template <
class REFERENCED_TYPE>
2321 REFERENCED_TYPE *>::value));
2324 static_cast<REFERENCED_TYPE *
>(
2325 static_cast<TARGET_TYPE *
>(d_members.pointer())));
2328template <
class TARGET_TYPE>
2335template <
class TARGET_TYPE>
2336template <
class MANAGED_TYPE>
2345 &DeleterFactory::deleter);
2348template <
class TARGET_TYPE>
2349template <
class MANAGED_TYPE,
class FACTORY_TYPE>
2360 this->loadImp(ptr,
static_cast<void *
>(factory), &DeleterFactory::deleter);
2363template <
class TARGET_TYPE>
2364template <
class MANAGED_TYPE>
2373 this->loadImp(ptr, cookie, deleter);
2376template <
class TARGET_TYPE>
2383#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2384template <
class TARGET_TYPE>
2385template <
class MANAGED_TYPE,
class COOKIE_TYPE>
2388 COOKIE_TYPE *cookie,
2394 this->loadImp(ptr,
static_cast<void *
>(cookie), deleter);
2397template <
class TARGET_TYPE>
2398template <
class MANAGED_TYPE,
class MANAGED_BASE>
2403 void (*deleter)(MANAGED_BASE *,
void *))
2410 this->loadImp(ptr, cookie,
reinterpret_cast<DeleterFunc>(deleter));
2413template <
class TARGET_TYPE>
2414template <
class MANAGED_TYPE,
2421 COOKIE_TYPE *cookie,
2422 void (*deleter)(MANAGED_BASE *, COOKIE_BASE *))
2430 static_cast<void *
>(
static_cast<COOKIE_BASE *
>(cookie)),
2435template <
class TARGET_TYPE>
2436template <
class ALIASED_TYPE>
2442 if (ptr && alias.d_members.
pointer()) {
2443 d_members.moveAssign(&alias.d_members);
2444 d_members.setAliasPtr(stripBasePointerType(ptr));
2447 d_members.runDeleter();
2452template <
class TARGET_TYPE>
2458 TARGET_TYPE *p = get();
2464 ResultType result = { p, d_members.deleter() };
2472template <
class TARGET_TYPE>
2477 TARGET_TYPE *result = get();
2483 *deleter = d_members.
deleter();
2489template <
class TARGET_TYPE>
2493 d_members.runDeleter();
2497template <
class TARGET_TYPE>
2501 d_members.swap(other.d_members);
2505template <
class TARGET_TYPE>
2507#if defined(BSLS_PLATFORM_CMP_IBM)
2513 return d_members.pointer()
2518template <
class TARGET_TYPE>
2525 return *
static_cast<TARGET_TYPE *
>(d_members.pointer());
2528template <
class TARGET_TYPE>
2532 return static_cast<TARGET_TYPE *
>(d_members.pointer());
2535template <
class TARGET_TYPE>
2541 return d_members.deleter();
2544template <
class TARGET_TYPE>
2548 return static_cast<TARGET_TYPE *
>(d_members.pointer());
2551template <
class TARGET_TYPE>
2559template <
class TARGET_TYPE>
2570#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
2572template <
class ELEMENT_TYPE,
class ALLOCATOR,
class... ARGS>
2575 ManagedPtr<ELEMENT_TYPE> >::type
2578 return allocateManaged<ELEMENT_TYPE>(
2579 allocator.mechanism(),
2583template <
class ELEMENT_TYPE,
class... ARGS>
2593 UnqualElem *objPtr =
2594 bslma::AllocatorUtil::allocateObject<UnqualElem>(defaultAllocator);
2597 defaultAllocator, objPtr);
2607template <
class ELEMENT_TYPE,
class... ARGS>
2616 ELEMENT_TYPE *objPtr = bslma::AllocatorUtil::newObject<UnqualElem>(
2630template <
class TARGET_TYPE>
2641template <
class MANAGED_TYPE>
2645 delete reinterpret_cast<MANAGED_TYPE *
>(ptr);
2656template <
class TARGET_TYPE>
2661template <
class TARGET_TYPE>
2671template <
class TARGET_TYPE>
Definition bslma_allocator.h:457
Definition bslma_deallocateobjectproctor.h:273
PtrType release()
Definition bslma_deallocateobjectproctor.h:438
Definition bslma_managedptrdeleter.h:109
void(* Deleter)(void *managedObject, void *cookie)
Deleter function prototype used to destroy the managed pointer.
Definition bslma_managedptrdeleter.h:115
Deleter deleter() const
Return the deleter function associated with this deleter.
Definition bslma_managedptrdeleter.h:255
Definition bslma_managedptr_members.h:86
void setAliasPtr(void *alias)
Definition bslma_managedptr_members.h:297
void runDeleter() const
Definition bslma_managedptr_members.h:320
void set(void *object, void *factory, DeleterFunc deleter)
Definition bslma_managedptr_members.h:283
void * pointer() const
Definition bslma_managedptr_members.h:314
Definition bslma_managedptr.h:1105
ManagedPtr_Ref(const ManagedPtr_Ref &original)=default
~ManagedPtr_Ref()
Definition bslma_managedptr.h:1899
ManagedPtr_Ref & operator=(const ManagedPtr_Ref &original)=default
TARGET_TYPE * target() const
Return a pointer to the referenced object.
Definition bslma_managedptr.h:1914
ManagedPtr_Ref(ManagedPtr_Members *base, TARGET_TYPE *target)
Definition bslma_managedptr.h:1889
ManagedPtr_Members * base() const
Return a pointer to the managed state of a ManagedPtr object.
Definition bslma_managedptr.h:1907
Definition bslma_managedptr.h:1182
ManagedPtr(TARGET_TYPE *ptr, void *cookie, DeleterFunc deleter)
Definition bslma_managedptr.h:2141
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:2047
TARGET_TYPE * get() const
Definition bslma_managedptr.h:2546
void load(bsl::nullptr_t=0, void *cookie=0, DeleterFunc deleter=0)
Definition bslma_managedptr.h:2378
void load(MANAGED_TYPE *ptr, FACTORY_TYPE *factory)
Definition bslma_managedptr.h:2351
TARGET_TYPE * release(ManagedPtrDeleter *deleter)
Definition bslma_managedptr.h:2473
ManagedPtr(ManagedPtr< ALIASED_TYPE > &alias, TARGET_TYPE *ptr)
Definition bslma_managedptr.h:2076
ManagedPtr(bsl::nullptr_t, FACTORY_TYPE *factory)
Definition bslma_managedptr.h:2134
ManagedPtr(MANAGED_TYPE *ptr, COOKIE_TYPE *cookie, void(*deleter)(MANAGED_BASE *, COOKIE_BASE *))
Definition bslma_managedptr.h:2191
TARGET_TYPE * ptr() const
Definition bslma_managedptr.h:2553
~ManagedPtr()
Definition bslma_managedptr.h:2218
bslmf::AddReference< TARGET_TYPE >::Type operator*() const
Definition bslma_managedptr.h:2521
const ManagedPtrDeleter & deleter() const
Definition bslma_managedptr.h:2537
ManagedPtr & operator=(ManagedPtr_Ref< TARGET_TYPE > ref) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2298
ManagedPtr(MANAGED_TYPE *ptr)
Definition bslma_managedptr.h:1990
void load(MANAGED_TYPE *ptr, COOKIE_TYPE *cookie, void(*deleter)(MANAGED_BASE *, COOKIE_BASE *))
Definition bslma_managedptr.h:2419
void swap(ManagedPtr &other)
Definition bslma_managedptr.h:2499
void load(MANAGED_TYPE *ptr)
Definition bslma_managedptr.h:2338
ManagedPtr & operator=(bslmf::MovableRef< ManagedPtr > rhs) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2236
ManagedPtr(MANAGED_TYPE *ptr, void *cookie, DeleterFunc deleter)
Definition bslma_managedptr.h:2152
ManagedPtr()
Create an empty managed pointer.
Definition bslma_managedptr.h:1982
void load(MANAGED_TYPE *ptr, void *cookie, DeleterFunc deleter)
Definition bslma_managedptr.h:2366
ManagedPtr(MANAGED_TYPE *ptr, FACTORY_TYPE *factory)
Definition bslma_managedptr.h:2113
void load(MANAGED_TYPE *ptr, COOKIE_TYPE *cookie, DeleterFunc deleter)
Definition bslma_managedptr.h:2387
ManagedPtr & operator=(bsl::nullptr_t)
Definition bslma_managedptr.h:2309
void load(MANAGED_TYPE *ptr, void *cookie, void(*deleter)(MANAGED_BASE *, void *))
Definition bslma_managedptr.h:2400
ManagedPtr(MANAGED_TYPE *ptr, void *cookie, void(*deleter)(MANAGED_BASE *, void *))
Definition bslma_managedptr.h:2169
TARGET_TYPE * operator->() const
Definition bslma_managedptr.h:2530
ManagedPtr(bslmf::MovableRef< ManagedPtr > original) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2017
void clear()
Definition bslma_managedptr.h:2330
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:2269
ManagedPtr & operator=(ManagedPtr &rhs) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2227
TARGET_TYPE element_type
Alias to the TARGET_TYPE template parameter.
Definition bslma_managedptr.h:1192
ManagedPtr(bslmf::MovableRef< ManagedPtr< ALIASED_TYPE > > alias, TARGET_TYPE *ptr)
Definition bslma_managedptr.h:2091
ManagedPtr_PairProxy< TARGET_TYPE, ManagedPtrDeleter > release()
Definition bslma_managedptr.h:2454
ManagedPtr(ManagedPtr_Ref< TARGET_TYPE > ref) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2001
ManagedPtr(bsl::nullptr_t, bsl::nullptr_t=0)
Definition bslma_managedptr.h:2126
friend class ManagedPtr
Definition bslma_managedptr.h:1288
ManagedPtr(ManagedPtr &original) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:2010
void reset()
Definition bslma_managedptr.h:2491
void loadAlias(ManagedPtr< ALIASED_TYPE > &alias, TARGET_TYPE *ptr)
Definition bslma_managedptr.h:2437
ManagedPtrDeleter::Deleter DeleterFunc
Definition bslma_managedptr.h:1189
Definition bslmf_movableref.h:751
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:229
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1762
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:632
Definition bdlb_printmethods.h:283
BloombergLP::bsls::Nullptr_Impl::Type nullptr_t
Definition bsls_nullptr.h:281
Definition balxml_encoderoptions.h:68
Definition bdlbb_blob.h:576
Definition bslmf_conditional.h:120
ManagedPtr_FactoryDeleter< TARGET_TYPE, Allocator > type
Definition bslmf_conditional.h:124
Definition bslmf_enableif.h:525
Definition bslmf_isconvertible.h:867
Definition bslmf_isnothrowmoveconstructible.h:358
Definition bslmf_isvoid.h:138
remove_const< typenameremove_volatile< t_TYPE >::type >::type type
Definition bslmf_removecv.h:126
static Allocator * allocator(Allocator *basicAllocator=0)
Definition bslma_default.h:897
static Allocator * defaultAllocator()
Definition bslma_default.h:889
Definition bslma_managedptr.h:1812
static void deleter(void *, void *)
Deleter function that does nothing.
Definition bslma_managedptr.h:2632
Definition bslma_managedptr.h:1757
static ManagedPtr< ELEMENT_TYPE > makeManaged(ARGS &&... args)
Definition bslma_managedptr.h:2585
static ManagedPtr< ELEMENT_TYPE > allocateManaged(bslma::Allocator *allocator, ARGS &&... args)
Definition bslma_managedptr.h:2610
static void noOpDeleter(void *, void *)
Deleter function that does nothing.
Definition bslma_managedptr.h:1847
static void deleter(void *ptr, void *)
Definition bslma_managedptr.h:2643
Definition bslma_managedptr.h:1837
Definition bslma_managedptr_factorydeleter.h:71
Definition bslma_managedptr.h:1073
static void * voidify(TYPE *address) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:1868
static TYPE * unqualify(const volatile TYPE *address) BSLS_KEYWORD_NOEXCEPT
Definition bslma_managedptr.h:1876
Definition bslma_managedptr_pairproxy.h:80
Definition bslma_managedptr.h:1153
bsl::add_lvalue_reference< t_TYPE >::type Type
Definition bslmf_addreference.h:188
Definition bslmf_haspointersemantics.h:78
Definition bslmf_isbitwisemoveable.h:718
Definition bslmf_movableref.h:791