11#ifndef INCLUDED_BDLMA_LOCALBUFFEREDOBJECT_CPP03
12#define INCLUDED_BDLMA_LOCALBUFFEREDOBJECT_CPP03
63#ifdef COMPILING_BDLMA_LOCALBUFFEREDOBJECT_H
65#ifdef BSLS_LIBRARYFEATURES_HAS_CPP11_BASELINE_LIBRARY
66#define BDLMA_LOCAL_BUFFERED_VALUE_IS_ASSIGNABLE(DST, SRC) \
67 std::is_assignable<DST, SRC>::value
69#define BDLMA_LOCAL_BUFFERED_VALUE_IS_ASSIGNABLE(DST, SRC) true
88template <
class t_TYPE,
89 bsl::size_t t_BUFFER_SIZE = 1024,
90 bool t_DISABLE_DESTRUCTION =
false>
91class LocalBufferedObject {
112 LocalBufferedObject& operator=(
const LocalBufferedObject&)
119 void destroyHeldObject();
124 BloombergLP::bslmf::UsesAllocatorArgT);
127#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
130#ifndef BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT
131#define BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT 10
133#ifndef BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A
134#define BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT
136#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 0
137 explicit LocalBufferedObject(
141#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 1
142 template <
class ARGS_01>
143 explicit LocalBufferedObject(
147#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 2
148 template <
class ARGS_01,
150 explicit LocalBufferedObject(
155#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 3
156 template <
class ARGS_01,
159 explicit LocalBufferedObject(
165#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 4
166 template <
class ARGS_01,
170 explicit LocalBufferedObject(
177#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 5
178 template <
class ARGS_01,
183 explicit LocalBufferedObject(
191#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 6
192 template <
class ARGS_01,
198 explicit LocalBufferedObject(
207#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 7
208 template <
class ARGS_01,
215 explicit LocalBufferedObject(
225#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 8
226 template <
class ARGS_01,
234 explicit LocalBufferedObject(
245#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 9
246 template <
class ARGS_01,
255 explicit LocalBufferedObject(
267#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 10
268 template <
class ARGS_01,
278 explicit LocalBufferedObject(
292#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 0
297#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 1
298 template <
class ARGS_01>
304#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 2
305 template <
class ARGS_01,
313#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 3
314 template <
class ARGS_01,
324#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 4
325 template <
class ARGS_01,
337#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 5
338 template <
class ARGS_01,
352#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 6
353 template <
class ARGS_01,
369#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 7
370 template <
class ARGS_01,
388#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 8
389 template <
class ARGS_01,
409#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 9
410 template <
class ARGS_01,
432#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_A >= 10
433 template <
class ARGS_01,
460 template <
class... ARGS>
461 explicit LocalBufferedObject(
464 template <
class... ARGS>
471#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
477 template <
class INIT_LIST_TYPE>
478 LocalBufferedObject(std::initializer_list<INIT_LIST_TYPE> il);
485 template <
class INIT_LIST_TYPE>
488 std::initializer_list<INIT_LIST_TYPE> il);
502 template <
class t_ANY_TYPE>
506 LocalBufferedObject>::type&
518#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
521#ifndef BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT
522#define BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT 10
524#ifndef BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C
525#define BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT
527#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 0
531#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 1
532 template <
class ARGS_01>
536#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 2
537 template <
class ARGS_01,
543#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 3
544 template <
class ARGS_01,
552#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 4
553 template <
class ARGS_01,
563#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 5
564 template <
class ARGS_01,
576#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 6
577 template <
class ARGS_01,
591#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 7
592 template <
class ARGS_01,
608#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 8
609 template <
class ARGS_01,
627#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 9
628 template <
class ARGS_01,
648#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_C >= 10
649 template <
class ARGS_01,
674 template <
class... ARGS>
679#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
684 template <
class INIT_LIST_TYPE>
685 void emplace(std::initializer_list<INIT_LIST_TYPE> il);
715template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
717void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
720 if (!t_DISABLE_DESTRUCTION) {
721 d_object.
address()->~value_type();
726#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
729#ifndef BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT
730#define BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT 10
732#ifndef BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D
733#define BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT
735#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 0
736template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
738LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
739 LocalBufferedObject()
748#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 1
749template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
750template <
class ARGS_01>
752LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
763#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 2
764template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
765template <
class ARGS_01,
768LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
781#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 3
782template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
783template <
class ARGS_01,
787LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
802#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 4
803template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
804template <
class ARGS_01,
809LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
826#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 5
827template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
828template <
class ARGS_01,
834LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
853#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 6
854template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
855template <
class ARGS_01,
862LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
883#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 7
884template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
885template <
class ARGS_01,
893LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
916#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 8
917template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
918template <
class ARGS_01,
927LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
952#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 9
953template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
954template <
class ARGS_01,
964LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
991#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 10
992template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
993template <
class ARGS_01,
1004LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1034#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 0
1035template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1037LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1040: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1048#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 1
1049template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1050template <
class ARGS_01>
1052LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1056: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1065#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 2
1066template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1067template <
class ARGS_01,
1070LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1075: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1085#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 3
1086template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1087template <
class ARGS_01,
1091LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1097: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1108#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 4
1109template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1110template <
class ARGS_01,
1115LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1122: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1134#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 5
1135template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1136template <
class ARGS_01,
1142LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1150: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1163#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 6
1164template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1165template <
class ARGS_01,
1172LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1181: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1195#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 7
1196template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1197template <
class ARGS_01,
1205LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1215: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1230#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 8
1231template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1232template <
class ARGS_01,
1241LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1252: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1268#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 9
1269template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1270template <
class ARGS_01,
1280LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1292: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1309#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_D >= 10
1310template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1311template <
class ARGS_01,
1322LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1335: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1356template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1357template <
class... ARGS>
1359LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1369template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1370template <
class... ARGS>
1372LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1376: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1386#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
1387template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1388template <
class INIT_LIST_TYPE>
1390LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1391 LocalBufferedObject(std::initializer_list<INIT_LIST_TYPE> il)
1400template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1401template <
class INIT_LIST_TYPE>
1403LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1406 std::initializer_list<INIT_LIST_TYPE> il)
1407: d_arenaAllocator(
bslma::AllocatorUtil::adapt(allocator))
1416template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1418LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1419 ~LocalBufferedObject()
1421 destroyHeldObject();
1428template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1429template <
class t_ANY_TYPE>
1434 LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION> >::type&
1435LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::operator=(
1444template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1446t_TYPE *LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1452template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1454t_TYPE& LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1457 return d_object.
object();
1460#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1463#ifndef BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT
1464#define BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT 10
1466#ifndef BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F
1467#define BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT
1469#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 0
1470template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1471void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1474 destroyHeldObject();
1482#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 1
1483template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1484template <
class ARGS_01>
1485void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1489 destroyHeldObject();
1498#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 2
1499template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1500template <
class ARGS_01,
1502void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1507 destroyHeldObject();
1517#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 3
1518template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1519template <
class ARGS_01,
1522void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1528 destroyHeldObject();
1539#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 4
1540template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1541template <
class ARGS_01,
1545void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1552 destroyHeldObject();
1564#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 5
1565template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1566template <
class ARGS_01,
1571void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1579 destroyHeldObject();
1592#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 6
1593template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1594template <
class ARGS_01,
1600void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1609 destroyHeldObject();
1623#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 7
1624template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1625template <
class ARGS_01,
1632void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1642 destroyHeldObject();
1657#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 8
1658template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1659template <
class ARGS_01,
1667void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1678 destroyHeldObject();
1694#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 9
1695template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1696template <
class ARGS_01,
1705void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1717 destroyHeldObject();
1734#if BDLMA_LOCALBUFFEREDOBJECT_VARIADIC_LIMIT_F >= 10
1735template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1736template <
class ARGS_01,
1746void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1759 destroyHeldObject();
1780template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1781template <
class... ARGS>
1782void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1785 destroyHeldObject();
1795#if defined(BSLS_COMPILERFEATURES_SUPPORT_GENERALIZED_INITIALIZERS)
1796template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1797template <
class INIT_LIST_TYPE>
1798void LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1799 emplace(std::initializer_list<INIT_LIST_TYPE> il)
1801 destroyHeldObject();
1811template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1814LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1820template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1823LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1826 return d_object.
object();
1829template <
class t_TYPE, bsl::
size_t t_BUFFER_SIZE,
bool t_DISABLE_DESTRUCTION>
1832LocalBufferedObject<t_TYPE, t_BUFFER_SIZE, t_DISABLE_DESTRUCTION>::
1833 get_allocator()
const
1835 return allocator_type(d_arenaAllocator.
allocator());
1838#undef BDLMA_LOCAL_BUFFERED_VALUE_IS_ASSIGNABLE
1844# error Not valid except when included from bdlma_localbufferedobject.h
#define BSLMF_NESTED_TRAIT_DECLARATION(t_TYPE, t_TRAIT)
Definition bslmf_nestedtraitdeclaration.h:231
bslma::Allocator * allocator() const
Return the allocator passed at construction.
Definition bdlma_bufferedsequentialallocator.h:537
void release() BSLS_KEYWORD_OVERRIDE
Definition bdlma_bufferedsequentialallocator.h:524
t_TYPE value_type
Definition bdlma_localbufferedobject.h:273
value_type & operator*()
Definition bdlma_localbufferedobject.h:524
~LocalBufferedObject()
Definition bdlma_localbufferedobject.h:489
@ k_BUFFER_SIZE
Definition bdlma_localbufferedobject.h:276
allocator_type get_allocator() const
Definition bdlma_localbufferedobject.h:582
value_type * operator->()
Definition bdlma_localbufferedobject.h:516
void emplace(BSLS_COMPILERFEATURES_FORWARD_REF(ARGS)... args)
Definition bdlma_localbufferedobject.h:533
bsl::allocator allocator_type
Definition bdlma_localbufferedobject.h:274
Definition bdlma_localsequentialallocator.h:230
Definition bslma_bslallocator.h:588
#define BDLMA_LOCAL_BUFFERED_VALUE_IS_ASSIGNABLE(DST, SRC)
Definition bdlma_localbufferedobject.h:245
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:231
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2343
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
#define BSLS_KEYWORD_DELETED
Definition bsls_keyword.h:651
Definition bdlma_alignedallocator.h:278
Definition baljsn_encoder_testtypes.h:76
Definition bslmf_allocatorargt.h:433
Definition bslmf_enableif.h:530
static bsl::enable_if<!IsDerivedFromBslAllocator< t_ALLOC >::value, t_ALLOC >::type adapt(const t_ALLOC &from)
Definition bslma_allocatorutil.h:871
static void construct(TARGET_TYPE *address, const ALLOCATOR &allocator)
Definition bslma_constructionutil.h:1244
Definition bslma_usesbslmaallocator.h:344
Definition bsls_objectbuffer.h:277
TYPE * address()
Definition bsls_objectbuffer.h:335
TYPE & object()
Definition bsls_objectbuffer.h:352