8#ifndef INCLUDED_BDLB_VARIANT
9#define INCLUDED_BDLB_VARIANT
678#include <bdlscm_version.h>
716#include <bsl_algorithm.h>
717#include <bsl_iosfwd.h>
719#ifndef BDE_DONT_ALLOW_TRANSITIVE_INCLUDES
723#ifndef BDE_OMIT_INTERNAL_DEPRECATED
727#include <bsl_typeinfo.h>
730#if BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
734# define COMPILING_BDLB_VARIANT_H
736# undef COMPILING_BDLB_VARIANT_H
739#if defined(BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES) \
740 && defined(BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES)
743#define BDLB_VARIANT_USING_VARIADIC_TEMPLATES
749struct Variant_CopyAssignVisitor;
750struct Variant_CopyConstructVisitor;
751struct Variant_DefaultConstructVisitor;
752struct Variant_DestructorVisitor;
753struct Variant_EqualityTestVisitor;
754struct Variant_MoveAssignVisitor;
755struct Variant_MoveConstructVisitor;
756struct Variant_PrintVisitor;
758template <
class TYPES>
761template <
class TYPES,
class TYPE>
762struct Variant_TypeIndex;
787 typename bsl::remove_reference<typename T::ResultType>::type *);
797template <
class VISITOR>
801 sizeof(Variant_ReturnValueHelper_Matcher::match<VISITOR>(0)) ==
802 sizeof(Variant_ReturnValueHelper_YesType)> {
815template <
class TYPES>
887 template <
class VARIANT_TYPES>
890 template <
class VARIANT_TYPES>
909 template <
class TYPE>
930template <
class TYPES>
997 template <
class VARIANT_TYPES>
1000 template <
class VARIANT_TYPES>
1013 template <
class TYPE>
1030template <
class TYPES>
1121#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1151template <
class RESULT_TYPE,
class VISITOR>
1169 template <
class ARGUMENT_TYPE>
1170 RESULT_TYPE
operator()(ARGUMENT_TYPE& argument);
1171 template <
class ARGUMENT_TYPE>
1172 RESULT_TYPE
operator()(
const ARGUMENT_TYPE& argument);
1178 template <
class ARGUMENT_TYPE>
1179 RESULT_TYPE
operator()(ARGUMENT_TYPE& argument)
const;
1180 template <
class ARGUMENT_TYPE>
1181 RESULT_TYPE
operator()(
const ARGUMENT_TYPE& argument)
const;
1212template <
class TYPES>
1232 template <
class TYPE,
class VISITOR_REF>
1234 template <
class TYPE,
class VISITOR_REF>
1236 template <
class TYPE,
class VISITOR_REF>
1237 void applyImp(VISITOR_REF visitor);
1246 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
1248 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
1250 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
1251 RET_TYPE applyImpR(VISITOR_REF visitor);
1257 template <
class TYPE,
class SOURCE_TYPE>
1258 void assignImp(
const SOURCE_TYPE& value);
1260 template <
class TYPE>
1261#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1262 void assignImp(TYPE&& value);
1275 template <
class TYPE>
1285 template <
class VISITOR_REF>
1286 void doApply(VISITOR_REF visitor,
int type);
1293 template <
class VISITOR_REF,
class RET_TYPE>
1294 RET_TYPE doApplyR(VISITOR_REF visitor,
int type);
1304 template <
class TYPE,
class VISITOR_REF>
1306 template <
class TYPE,
class VISITOR_REF>
1308 template <
class TYPE,
class VISITOR_REF>
1309 void applyImp(VISITOR_REF visitor)
const;
1318 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
1320 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
1322 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
1323 RET_TYPE applyImpR(VISITOR_REF visitor)
const;
1329 template <
class VISITOR_REF>
1330 void doApply(VISITOR_REF visitor,
int type)
const;
1337 template <
class VISITOR_REF,
class RET_TYPE>
1338 RET_TYPE doApplyR(VISITOR_REF visitor,
int type)
const;
1373 template <
class TYPE_OR_ALLOCATOR>
1382 template <
class TYPE>
1385 template <
class TYPE>
1387#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1393 typename bsl::remove_reference<TYPE>::type>::type>::value
1410 template <
class TYPE>
1411#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1417 typename bsl::remove_reference<TYPE>::type>::type>::value,
1467 template <
class TYPE>
1470 template <
class TYPE>
1471#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1514 template <
class VISITOR>
1516 typename VISITOR::ResultType>::type
1520 return doApplyR<VISITOR&,
1521 typename VISITOR::ResultType>(visitor, this->d_type);
1526 return visitor(nil);
1538 template <
class VISITOR>
1540 typename VISITOR::ResultType>::type
1544 return doApplyR<
const VISITOR&,
1545 typename VISITOR::ResultType>(visitor, this->d_type);
1550 return visitor(nil);
1565 template <
class VISITOR,
class TYPE>
1567 typename VISITOR::ResultType>::type
1568 apply(VISITOR& visitor,
const TYPE& defaultValue) {
1571 return doApplyR<VISITOR&,
1572 typename VISITOR::ResultType>(visitor, this->d_type);
1576 return visitor(defaultValue);
1591 template <
class VISITOR,
class TYPE>
1593 typename VISITOR::ResultType>::type
1594 apply(
const VISITOR& visitor,
const TYPE& defaultValue) {
1597 return doApplyR<
const VISITOR&,
1598 typename VISITOR::ResultType>(visitor, this->d_type);
1602 return visitor(defaultValue);
1613 template <
class VISITOR>
1619 doApply<VISITOR&>(visitor, this->d_type);
1635 template <
class VISITOR>
1641 doApply<const VISITOR&>(visitor, this->d_type);
1661 template <
class VISITOR,
class TYPE>
1664 apply(VISITOR& visitor,
const TYPE& defaultValue) {
1667 doApply<VISITOR&>(visitor, this->d_type);
1671 visitor(defaultValue);
1686 template <
class VISITOR,
class TYPE>
1689 apply(
const VISITOR& visitor,
const TYPE& defaultValue) {
1692 doApply<const VISITOR&>(visitor, this->d_type);
1696 visitor(defaultValue);
1705 template <
class RET_TYPE,
class VISITOR>
1707 template <
class RET_TYPE,
class VISITOR>
1719 template <
class RET_TYPE,
class VISITOR,
class TYPE>
1720 RET_TYPE
apply(VISITOR& visitor,
const TYPE& defaultValue);
1721 template <
class RET_TYPE,
class VISITOR,
class TYPE>
1722 RET_TYPE
apply(
const VISITOR& visitor,
const TYPE& defaultValue);
1733 template <
class VISITOR>
1735 typename VISITOR::ResultType>::type
1741 return doApplyR<
const Helper&,
1742 typename VISITOR::ResultType>(Helper(&visitor),
1755 template <
class VISITOR>
1757 typename VISITOR::ResultType>::type
1761 const VISITOR> Helper;
1763 return doApplyR<
const Helper&,
1764 typename VISITOR::ResultType>(Helper(&visitor),
1776 template <
class VISITOR>
1783 doApply<const Helper&>(Helper(&visitor), this->d_type);
1794 template <
class VISITOR>
1801 doApply<const Helper&>(Helper(&visitor), this->d_type);
1809 template <
class RET_TYPE,
class VISITOR>
1811 template <
class RET_TYPE,
class VISITOR>
1819 template <
class TYPE>
1822 template <
class TYPE>
1823#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1843 template <
class TYPE,
class SOURCE_TYPE>
1846#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1857 template <
class TYPE,
class... ARGS>
1878 template <
class TYPE>
1891 template <
class VISITOR>
1893 typename VISITOR::ResultType>::type
1897 return doApplyR<VISITOR&,
1898 typename VISITOR::ResultType>(visitor, this->d_type);
1903 return visitor(nil);
1914 template <
class VISITOR>
1916 typename VISITOR::ResultType>::type
1920 return doApplyR<
const VISITOR&,
1921 typename VISITOR::ResultType>(visitor, this->d_type);
1926 return visitor(nil);
1941 template <
class VISITOR,
class TYPE>
1943 typename VISITOR::ResultType>::type
1944 apply(VISITOR& visitor,
const TYPE& defaultValue)
const {
1947 return doApplyR<VISITOR&,
1948 typename VISITOR::ResultType>(visitor, this->d_type);
1952 return visitor(defaultValue);
1967 template <
class VISITOR,
class TYPE>
1969 typename VISITOR::ResultType>::type
1970 apply(
const VISITOR& visitor,
const TYPE& defaultValue)
const {
1973 return doApplyR<
const VISITOR&,
1974 typename VISITOR::ResultType>(visitor, this->d_type);
1978 return visitor(defaultValue);
1989 template <
class VISITOR>
1995 doApply<VISITOR&>(visitor, this->d_type);
2011 template <
class VISITOR>
2017 doApply<const VISITOR&>(visitor, this->d_type);
2037 template <
class VISITOR,
class TYPE>
2040 apply(VISITOR& visitor,
const TYPE& defaultValue)
const {
2043 doApply<VISITOR&>(visitor, this->d_type);
2047 visitor(defaultValue);
2062 template <
class VISITOR,
class TYPE>
2065 apply(
const VISITOR& visitor,
const TYPE& defaultValue)
const {
2068 doApply<const VISITOR&>(visitor, this->d_type);
2072 visitor(defaultValue);
2080 template <
class RET_TYPE,
class VISITOR>
2082 template <
class RET_TYPE,
class VISITOR>
2083 RET_TYPE
apply(
const VISITOR& visitor)
const;
2093 template <
class RET_TYPE,
class VISITOR,
class TYPE>
2094 RET_TYPE
apply(VISITOR& visitor,
const TYPE& defaultValue)
const;
2095 template <
class RET_TYPE,
class VISITOR,
class TYPE>
2096 RET_TYPE
apply(
const VISITOR& visitor,
const TYPE& defaultValue)
const;
2106 template <
class VISITOR>
2108 typename VISITOR::ResultType>::type
2114 return doApplyR<
const Helper&,
2115 typename VISITOR::ResultType>(Helper(&visitor),
2127 template <
class VISITOR>
2129 typename VISITOR::ResultType>::type
2133 const VISITOR> Helper;
2135 return doApplyR<
const Helper&,
2136 typename VISITOR::ResultType>(Helper(&visitor),
2148 template <
class VISITOR>
2155 return doApply<const Helper&>(Helper(&visitor), this->d_type);
2166 template <
class VISITOR>
2173 return doApply<const Helper&>(Helper(&visitor), this->d_type);
2180 template <
class RET_TYPE,
class VISITOR>
2182 template <
class RET_TYPE,
class VISITOR>
2189 template <
class TYPE>
2214 bsl::ostream&
print(bsl::ostream& stream,
2216 int spacesPerLevel = 4)
const;
2224 template <
class TYPE>
2234#ifndef BDE_OMIT_INTERNAL_DEPRECATED
2241 template <
class STREAM>
2248 template <
class STREAM>
2260template <
class TYPES>
2269template <
class TYPES>
2276template <
class TYPES>
2286template <
class TYPES>
2293#if defined(BDLB_VARIANT_USING_VARIADIC_TEMPLATES)
2294template <
class ...TYPES>
2310 A6, A7, A8, A9, A10,
2311 A11, A12, A13, A14, A15,
2312 A16, A17, A18, A19, A20>::ListType> {
2322#if defined(BDLB_VARIANT_USING_VARIADIC_TEMPLATES)
2329 A7, A8, A9, A10, A11, A12,
2330 A13, A14, A15, A16, A17, A18,
2331 A19, A20>::ListType>
Imp;
2333 typedef Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
2334 A11, A12, A13, A14, A15, A16, A17, A18, A19, A20>
SelfType;
2374 template <
class TYPE_OR_ALLOCATOR>
2376 Variant(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
2383 template <
class TYPE>
2386 template <
class TYPE>
2388#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2394 typename bsl::remove_reference<TYPE>::type>::type>::value
2411 template <
class TYPE>
2412#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2418 typename bsl::remove_reference<TYPE>::type>::type>::value,
2463 template <
class TYPE>
2466 template <
class TYPE>
2467#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2512template <
class A1,
class A2>
2514 A1, A2>::ListType> {
2529 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
2532 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
2535 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
2558 template <
class TYPE_OR_ALLOCATOR>
2560 Variant2(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
2567 template <
class TYPE>
2570 template <
class TYPE>
2572#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2578 typename bsl::remove_reference<TYPE>::type>::type>::value
2595 template <
class TYPE>
2596#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2602 typename bsl::remove_reference<TYPE>::type>::type>::value,
2647 template <
class TYPE>
2650 template <
class TYPE>
2651#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2656 operator=(TYPE&& value);
2696template <
class A1,
class A2,
class A3>
2698 A1, A2, A3>::ListType> {
2714 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
2717 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
2720 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
2743 template <
class TYPE_OR_ALLOCATOR>
2745 Variant3(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
2752 template <
class TYPE>
2755 template <
class TYPE>
2757#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2763 typename bsl::remove_reference<TYPE>::type>::type>::value
2780 template <
class TYPE>
2781#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2787 typename bsl::remove_reference<TYPE>::type>::type>::value,
2832 template <
class TYPE>
2835 template <
class TYPE>
2836#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2841 operator=(TYPE&& value);
2881template <
class A1,
class A2,
class A3,
class A4>
2883 A1, A2, A3, A4>::ListType> {
2899 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
2902 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
2905 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
2928 template <
class TYPE_OR_ALLOCATOR>
2930 Variant4(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
2937 template <
class TYPE>
2940 template <
class TYPE>
2942#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2948 typename bsl::remove_reference<TYPE>::type>::type>::value
2965 template <
class TYPE>
2966#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2972 typename bsl::remove_reference<TYPE>::type>::type>::value,
3017 template <
class TYPE>
3020 template <
class TYPE>
3021#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3026 operator=(TYPE&& value);
3066template <
class A1,
class A2,
class A3,
class A4,
class A5>
3068 A1, A2, A3, A4, A5>::ListType> {
3084 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3087 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3090 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3113 template <
class TYPE_OR_ALLOCATOR>
3115 Variant5(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3122 template <
class TYPE>
3125 template <
class TYPE>
3127#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3133 typename bsl::remove_reference<TYPE>::type>::type>::value
3150 template <
class TYPE>
3151#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3157 typename bsl::remove_reference<TYPE>::type>::type>::value,
3202 template <
class TYPE>
3205 template <
class TYPE>
3206#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3211 operator=(TYPE&& value);
3251template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
3253 A1, A2, A3, A4, A5, A6>::ListType> {
3269 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3272 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3275 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3298 template <
class TYPE_OR_ALLOCATOR>
3300 Variant6(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3307 template <
class TYPE>
3310 template <
class TYPE>
3312#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3318 typename bsl::remove_reference<TYPE>::type>::type>::value
3335 template <
class TYPE>
3336#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3342 typename bsl::remove_reference<TYPE>::type>::type>::value,
3387 template <
class TYPE>
3390 template <
class TYPE>
3391#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3396 operator=(TYPE&& value);
3436template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3439 A1, A2, A3, A4, A5, A6, A7>::ListType> {
3455 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3458 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3461 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3484 template <
class TYPE_OR_ALLOCATOR>
3486 Variant7(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3493 template <
class TYPE>
3496 template <
class TYPE>
3498#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3504 typename bsl::remove_reference<TYPE>::type>::type>::value
3521 template <
class TYPE>
3522#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3528 typename bsl::remove_reference<TYPE>::type>::type>::value,
3573 template <
class TYPE>
3576 template <
class TYPE>
3577#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3582 operator=(TYPE&& value);
3622template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3625 A1, A2, A3, A4, A5, A6, A7, A8>::ListType> {
3641 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3644 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3647 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3670 template <
class TYPE_OR_ALLOCATOR>
3672 Variant8(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3679 template <
class TYPE>
3682 template <
class TYPE>
3684#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3690 typename bsl::remove_reference<TYPE>::type>::type>::value
3707 template <
class TYPE>
3708#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3714 typename bsl::remove_reference<TYPE>::type>::type>::value,
3759 template <
class TYPE>
3762 template <
class TYPE>
3763#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3768 operator=(TYPE&& value);
3808template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3809 class A7,
class A8,
class A9>
3811 A1, A2, A3, A4, A5, A6, A7, A8, A9>::ListType> {
3815 A8, A9>::ListType>
Imp;
3827 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3830 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3833 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3856 template <
class TYPE_OR_ALLOCATOR>
3858 Variant9(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3865 template <
class TYPE>
3868 template <
class TYPE>
3870#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3876 typename bsl::remove_reference<TYPE>::type>::type>::value
3893 template <
class TYPE>
3894#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3900 typename bsl::remove_reference<TYPE>::type>::type>::value,
3945 template <
class TYPE>
3948 template <
class TYPE>
3949#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3954 operator=(TYPE&& value);
3994template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3995 class A7,
class A8,
class A9,
class A10>
3997 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::ListType> {
4002 A10>::ListType>
Imp;
4014 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4017 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4020 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4043 template <
class TYPE_OR_ALLOCATOR>
4045 Variant10(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4052 template <
class TYPE>
4055 template <
class TYPE>
4057#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4063 typename bsl::remove_reference<TYPE>::type>::type>::value
4080 template <
class TYPE>
4081#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4087 typename bsl::remove_reference<TYPE>::type>::type>::value,
4132 template <
class TYPE>
4135 template <
class TYPE>
4136#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4141 operator=(TYPE&& value);
4181template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4182 class A7,
class A8,
class A9,
class A10,
class A11>
4184 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::ListType> {
4189 A11>::ListType>
Imp;
4192 typedef Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
4202 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4205 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4208 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4231 template <
class TYPE_OR_ALLOCATOR>
4233 Variant11(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4240 template <
class TYPE>
4243 template <
class TYPE>
4245#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4251 typename bsl::remove_reference<TYPE>::type>::type>::value
4268 template <
class TYPE>
4269#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4275 typename bsl::remove_reference<TYPE>::type>::type>::value,
4320 template <
class TYPE>
4323 template <
class TYPE>
4324#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4329 operator=(TYPE&& value);
4369template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4370 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
4372 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::ListType> {
4376 A7, A8, A9, A10, A11,
4377 A12>::ListType>
Imp;
4380 typedef Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
4390 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4393 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4396 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4419 template <
class TYPE_OR_ALLOCATOR>
4421 Variant12(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4428 template <
class TYPE>
4431 template <
class TYPE>
4433#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4439 typename bsl::remove_reference<TYPE>::type>::type>::value
4456 template <
class TYPE>
4457#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4463 typename bsl::remove_reference<TYPE>::type>::type>::value,
4508 template <
class TYPE>
4511 template <
class TYPE>
4512#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4517 operator=(TYPE&& value);
4557template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4558 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
4561 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::ListType> {
4565 A7, A8, A9, A10, A11, A12,
4566 A13>::ListType>
Imp;
4569 typedef Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9,
4579 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4582 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4585 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4608 template <
class TYPE_OR_ALLOCATOR>
4610 Variant13(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4617 template <
class TYPE>
4620 template <
class TYPE>
4622#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4628 typename bsl::remove_reference<TYPE>::type>::type>::value
4645 template <
class TYPE>
4646#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4652 typename bsl::remove_reference<TYPE>::type>::type>::value,
4697 template <
class TYPE>
4700 template <
class TYPE>
4701#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4706 operator=(TYPE&& value);
4746template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4747 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
4748 class A13,
class A14>
4751 A6, A7, A8, A9, A10,
4752 A11, A12, A13, A14>::ListType> {
4756 A7, A8, A9, A10, A11, A12,
4758 A14>::ListType>
Imp;
4761 typedef Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9,
4771 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4774 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4777 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4800 template <
class TYPE_OR_ALLOCATOR>
4802 Variant14(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4809 template <
class TYPE>
4812 template <
class TYPE>
4814#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4820 typename bsl::remove_reference<TYPE>::type>::type>::value
4837 template <
class TYPE>
4838#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4844 typename bsl::remove_reference<TYPE>::type>::type>::value,
4889 template <
class TYPE>
4892 template <
class TYPE>
4893#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4898 operator=(TYPE&& value);
4938template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4939 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
4940 class A13,
class A14,
class A15>
4943 A6, A7, A8, A9, A10,
4944 A11, A12, A13, A14, A15>::ListType> {
4948 A7, A8, A9, A10, A11, A12,
4950 A15>::ListType>
Imp;
4953 typedef Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9,
4954 A10, A11, A12, A13, A14, A15>
SelfType;
4963 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4966 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4969 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4992 template <
class TYPE_OR_ALLOCATOR>
4994 Variant15(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
5001 template <
class TYPE>
5004 template <
class TYPE>
5006#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5012 typename bsl::remove_reference<TYPE>::type>::type>::value
5029 template <
class TYPE>
5030#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5036 typename bsl::remove_reference<TYPE>::type>::type>::value,
5081 template <
class TYPE>
5084 template <
class TYPE>
5085#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5090 operator=(TYPE&& value);
5130template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
5131 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
5132 class A13,
class A14,
class A15,
class A16>
5135 A6, A7, A8, A9, A10,
5136 A11, A12, A13, A14, A15,
5141 A7, A8, A9, A10, A11, A12,
5143 A16>::ListType>
Imp;
5146 typedef Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9,
5147 A10, A11, A12, A13, A14, A15, A16>
SelfType;
5156 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
5159 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
5162 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
5185 template <
class TYPE_OR_ALLOCATOR>
5187 Variant16(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
5194 template <
class TYPE>
5197 template <
class TYPE>
5199#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5205 typename bsl::remove_reference<TYPE>::type>::type>::value
5222 template <
class TYPE>
5223#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5229 typename bsl::remove_reference<TYPE>::type>::type>::value,
5274 template <
class TYPE>
5277 template <
class TYPE>
5278#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5283 operator=(TYPE&& value);
5323template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
5324 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
5325 class A13,
class A14,
class A15,
class A16,
class A17>
5328 A6, A7, A8, A9, A10,
5329 A11, A12, A13, A14, A15,
5330 A16, A17>::ListType> {
5334 A7, A8, A9, A10, A11, A12,
5336 A17>::ListType>
Imp;
5339 typedef Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9,
5340 A10, A11, A12, A13, A14, A15, A16, A17>
SelfType;
5349 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
5352 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
5355 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
5378 template <
class TYPE_OR_ALLOCATOR>
5380 Variant17(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
5387 template <
class TYPE>
5390 template <
class TYPE>
5392#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5398 typename bsl::remove_reference<TYPE>::type>::type>::value
5415 template <
class TYPE>
5416#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5422 typename bsl::remove_reference<TYPE>::type>::type>::value,
5467 template <
class TYPE>
5470 template <
class TYPE>
5471#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5476 operator=(TYPE&& value);
5516template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
5517 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
5518 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
5521 A6, A7, A8, A9, A10,
5522 A11, A12, A13, A14, A15,
5523 A16, A17, A18>::ListType> {
5527 A7, A8, A9, A10, A11, A12,
5528 A13, A14, A15, A16, A17,
5529 A18>::ListType>
Imp;
5532 typedef Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9,
5533 A10, A11, A12, A13, A14, A15, A16, A17, A18>
SelfType;
5542 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
5545 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
5548 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
5571 template <
class TYPE_OR_ALLOCATOR>
5573 Variant18(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
5580 template <
class TYPE>
5583 template <
class TYPE>
5585#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5591 typename bsl::remove_reference<TYPE>::type>::type>::value
5608 template <
class TYPE>
5609#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5615 typename bsl::remove_reference<TYPE>::type>::type>::value,
5660 template <
class TYPE>
5663 template <
class TYPE>
5664#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5669 operator=(TYPE&& value);
5709template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
5710 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
5711 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
5715 A6, A7, A8, A9, A10,
5716 A11, A12, A13, A14, A15,
5717 A16, A17, A18, A19>::ListType> {
5721 A7, A8, A9, A10, A11, A12,
5722 A13, A14, A15, A16, A17, A18,
5723 A19>::ListType>
Imp;
5726 typedef Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9,
5727 A10, A11, A12, A13, A14, A15, A16, A17, A18,
5737 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
5740 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
5743 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
5766 template <
class TYPE_OR_ALLOCATOR>
5768 Variant19(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
5775 template <
class TYPE>
5778 template <
class TYPE>
5780#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5786 typename bsl::remove_reference<TYPE>::type>::type>::value
5803 template <
class TYPE>
5804#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5810 typename bsl::remove_reference<TYPE>::type>::type>::value,
5855 template <
class TYPE>
5858 template <
class TYPE>
5859#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5864 operator=(TYPE&& value);
5905template <
class TYPES,
class TYPE>
5976#if defined(BDLB_VARIANT_USING_VARIADIC_TEMPLATES)
6009 : d_allocator_p(allocator)
6014 template <
class TYPE>
6037 : d_buffer_p(buffer)
6038 , d_allocator_p(allocator)
6044 template <
class TYPE>
6048 reinterpret_cast<TYPE *
>(d_buffer_p),
6070 : d_buffer_p(buffer)
6071 , d_allocator_p(allocator)
6077 template <
class TYPE>
6081 reinterpret_cast<TYPE *
>(d_buffer_p),
6096 template <
class TYPE>
6099 bslma::DestructionUtil::destroy(&
object);
6119 : d_buffer_p(buffer)
6125 template <
class TYPE>
6128 *
reinterpret_cast<TYPE *
>(d_buffer_p) = value;
6148 : d_buffer_p(buffer)
6154 template <
class TYPE>
6157 *
reinterpret_cast<TYPE *
>(d_buffer_p) =
6178 : d_buffer_p(buffer)
6184 template <
class TYPE>
6191#ifndef BDE_OMIT_INTERNAL_DEPRECATED
6202template <
class STREAM>
6212 , d_version(version)
6217 template <
class VALUETYPE>
6240template <
class STREAM>
6250 , d_version(version)
6255 template <
class VALUETYPE>
6289 : d_stream_p(stream)
6291 , d_spacesPerLevel(spacesPerLevel)
6297 template <
class TYPE>
6300 PrintMethods::print(*d_stream_p, value, d_level, d_spacesPerLevel);
6328 , d_buffer_p(buffer)
6334 template <
class TYPE>
6337 d_result = *
reinterpret_cast<const TYPE *
>(d_buffer_p) == value;
6355template <
class TYPES>
6360, d_allocator_p(
bslma::Default::allocator(basicAllocator))
6364template <
class TYPES>
6369, d_allocator_p(
bslma::Default::allocator(basicAllocator))
6373template <
class TYPES>
6374template <
class TYPE>
6379, d_allocator_p(
bslma::Default::allocator(0))
6384template <
class TYPES>
6389 return d_allocator_p;
6397template <
class TYPES>
6405template <
class TYPES>
6413template <
class TYPES>
6414template <
class TYPE>
6423template <
class TYPES>
6436template <
class RESULT_TYPE,
class VISITOR>
6446template <
class RESULT_TYPE,
class VISITOR>
6447template <
class ARGUMENT_TYPE>
6451 ARGUMENT_TYPE& argument)
6453 return static_cast<RESULT_TYPE
>((*d_visitor)(argument));
6456template <
class RESULT_TYPE,
class VISITOR>
6457template <
class ARGUMENT_TYPE>
6461 const ARGUMENT_TYPE& argument)
6463 return static_cast<RESULT_TYPE
>((*d_visitor)(argument));
6467template <
class RESULT_TYPE,
class VISITOR>
6468template <
class ARGUMENT_TYPE>
6472 ARGUMENT_TYPE& argument)
const
6474 return static_cast<RESULT_TYPE
>((*d_visitor)(argument));
6477template <
class RESULT_TYPE,
class VISITOR>
6478template <
class ARGUMENT_TYPE>
6482 const ARGUMENT_TYPE& argument)
const
6484 return static_cast<RESULT_TYPE
>((*d_visitor)(argument));
6487template <
class RESULT_TYPE,
class VISITOR>
6499template <
class TYPES>
6500template <
class TYPE,
class VISITOR_REF>
6506 visitor(
reinterpret_cast<BufferType *
>(&this->d_value)->
object());
6509template <
class TYPES>
6510template <
class TYPE,
class VISITOR_REF>
6512void VariantImp<TYPES>::applyImp(VISITOR_REF visitor,
bsl::true_type)
6518template <
class TYPES>
6519template <
class TYPE,
class VISITOR_REF>
6521void VariantImp<TYPES>::applyImp(VISITOR_REF visitor)
6524 applyImp<TYPE, VISITOR_REF>(visitor, IsUnset());
6527template <
class TYPES>
6528template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6530RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor,
bsl::false_type)
6534 return visitor(
reinterpret_cast<BufferType *
>(&this->d_value)->
object());
6537template <
class TYPES>
6538template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6540RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor,
bsl::true_type)
6543 return visitor(nil);
6546template <
class TYPES>
6547template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6549RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor)
6552 return applyImpR<TYPE, VISITOR_REF, RET_TYPE>(visitor, IsUnset());
6555template <
class TYPES>
6556template <
class TYPE,
class SOURCE_TYPE>
6557void VariantImp<TYPES>::assignImp(
const SOURCE_TYPE& value)
6563 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6564 this->getAllocator(),
6569template <
class TYPES>
6570template <
class TYPE>
6571#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6572void VariantImp<TYPES>::assignImp(TYPE&& value)
6582#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6584 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6585 this->getAllocator(),
6588 TYPE& lvalue = value;
6590 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6591 this->getAllocator(),
6596 Variant_TypeIndex<TYPES,
6597 typename bsl::remove_reference<TYPE>::type>::value;
6600template <
class TYPES>
6601template <
class VISITOR_REF>
6602void VariantImp<TYPES>::doApply(VISITOR_REF visitor,
int type)
6606 BSLS_ASSERT(0 ==
"'doApply' invoked on an unset variant");
6609 applyImp<typename Base::Type1, VISITOR_REF>(visitor);
6612 applyImp<typename Base::Type2, VISITOR_REF>(visitor);
6615 applyImp<typename Base::Type3, VISITOR_REF>(visitor);
6618 applyImp<typename Base::Type4, VISITOR_REF>(visitor);
6621 applyImp<typename Base::Type5, VISITOR_REF>(visitor);
6624 applyImp<typename Base::Type6, VISITOR_REF>(visitor);
6627 applyImp<typename Base::Type7, VISITOR_REF>(visitor);
6630 applyImp<typename Base::Type8, VISITOR_REF>(visitor);
6633 applyImp<typename Base::Type9, VISITOR_REF>(visitor);
6636 applyImp<typename Base::Type10, VISITOR_REF>(visitor);
6639 applyImp<typename Base::Type11, VISITOR_REF>(visitor);
6642 applyImp<typename Base::Type12, VISITOR_REF>(visitor);
6645 applyImp<typename Base::Type13, VISITOR_REF>(visitor);
6648 applyImp<typename Base::Type14, VISITOR_REF>(visitor);
6651 applyImp<typename Base::Type15, VISITOR_REF>(visitor);
6654 applyImp<typename Base::Type16, VISITOR_REF>(visitor);
6657 applyImp<typename Base::Type17, VISITOR_REF>(visitor);
6660 applyImp<typename Base::Type18, VISITOR_REF>(visitor);
6663 applyImp<typename Base::Type19, VISITOR_REF>(visitor);
6666 applyImp<typename Base::Type20, VISITOR_REF>(visitor);
6674template <
class TYPES>
6675template <
class TYPE>
6682 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6683 this->getAllocator(),
6687template <
class TYPES>
6693template <
class TYPES>
6694template <
class VISITOR_REF,
class RET_TYPE>
6695RET_TYPE VariantImp<TYPES>::doApplyR(VISITOR_REF visitor,
int type)
6702 return applyImpR<
typename Base::Type1,
6707 return applyImpR<
typename Base::Type2,
6712 return applyImpR<
typename Base::Type3,
6717 return applyImpR<
typename Base::Type4,
6722 return applyImpR<
typename Base::Type5,
6727 return applyImpR<
typename Base::Type6,
6732 return applyImpR<
typename Base::Type7,
6737 return applyImpR<
typename Base::Type8,
6742 return applyImpR<
typename Base::Type9,
6747 return applyImpR<
typename Base::Type10,
6752 return applyImpR<
typename Base::Type11,
6757 return applyImpR<
typename Base::Type12,
6762 return applyImpR<
typename Base::Type13,
6767 return applyImpR<
typename Base::Type14,
6772 return applyImpR<
typename Base::Type15,
6777 return applyImpR<
typename Base::Type16,
6782 return applyImpR<
typename Base::Type17,
6787 return applyImpR<
typename Base::Type18,
6792 return applyImpR<
typename Base::Type19,
6797 return applyImpR<
typename Base::Type20,
6808template <
class TYPES>
6809template <
class TYPE,
class VISITOR_REF>
6811void VariantImp<TYPES>::applyImp(VISITOR_REF visitor,
bsl::false_type)
const
6815 visitor(
reinterpret_cast<const BufferType *
>(&this->d_value)->
object());
6818template <
class TYPES>
6819template <
class TYPE,
class VISITOR_REF>
6821void VariantImp<TYPES>::applyImp(VISITOR_REF visitor,
bsl::true_type)
const
6827template <
class TYPES>
6828template <
class TYPE,
class VISITOR_REF>
6830void VariantImp<TYPES>::applyImp(VISITOR_REF visitor)
const
6833 applyImp<TYPE, VISITOR_REF>(visitor, IsUnset());
6836template <
class TYPES>
6837template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6839RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor,
6844 return visitor(
reinterpret_cast<const BufferType *
>(
6845 &this->d_value)->
object());
6848template <
class TYPES>
6849template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6851RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor,
6855 return visitor(nil);
6858template <
class TYPES>
6859template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6861RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor)
const
6864 return applyImpR<TYPE, VISITOR_REF, RET_TYPE>(visitor, IsUnset());
6867template <
class TYPES>
6868template <
class VISITOR_REF>
6869void VariantImp<TYPES>::doApply(VISITOR_REF visitor,
int type)
const
6876 applyImp<typename Base::Type1, VISITOR_REF>(visitor);
6879 applyImp<typename Base::Type2, VISITOR_REF>(visitor);
6882 applyImp<typename Base::Type3, VISITOR_REF>(visitor);
6885 applyImp<typename Base::Type4, VISITOR_REF>(visitor);
6888 applyImp<typename Base::Type5, VISITOR_REF>(visitor);
6891 applyImp<typename Base::Type6, VISITOR_REF>(visitor);
6894 applyImp<typename Base::Type7, VISITOR_REF>(visitor);
6897 applyImp<typename Base::Type8, VISITOR_REF>(visitor);
6900 applyImp<typename Base::Type9, VISITOR_REF>(visitor);
6903 applyImp<typename Base::Type10, VISITOR_REF>(visitor);
6906 applyImp<typename Base::Type11, VISITOR_REF>(visitor);
6909 applyImp<typename Base::Type12, VISITOR_REF>(visitor);
6912 applyImp<typename Base::Type13, VISITOR_REF>(visitor);
6915 applyImp<typename Base::Type14, VISITOR_REF>(visitor);
6918 applyImp<typename Base::Type15, VISITOR_REF>(visitor);
6921 applyImp<typename Base::Type16, VISITOR_REF>(visitor);
6924 applyImp<typename Base::Type17, VISITOR_REF>(visitor);
6927 applyImp<typename Base::Type18, VISITOR_REF>(visitor);
6930 applyImp<typename Base::Type19, VISITOR_REF>(visitor);
6933 applyImp<typename Base::Type20, VISITOR_REF>(visitor);
6941template <
class TYPES>
6942template <
class VISITOR_REF,
class RET_TYPE>
6943RET_TYPE VariantImp<TYPES>::doApplyR(VISITOR_REF visitor,
int type)
const
6950 return applyImpR<
typename Base::Type1,
6955 return applyImpR<
typename Base::Type2,
6960 return applyImpR<
typename Base::Type3,
6965 return applyImpR<
typename Base::Type4,
6970 return applyImpR<
typename Base::Type5,
6975 return applyImpR<
typename Base::Type6,
6980 return applyImpR<
typename Base::Type7,
6985 return applyImpR<
typename Base::Type8,
6990 return applyImpR<
typename Base::Type9,
6995 return applyImpR<
typename Base::Type10,
7000 return applyImpR<
typename Base::Type11,
7005 return applyImpR<
typename Base::Type12,
7010 return applyImpR<
typename Base::Type13,
7015 return applyImpR<
typename Base::Type14,
7020 return applyImpR<
typename Base::Type15,
7025 return applyImpR<
typename Base::Type16,
7030 return applyImpR<
typename Base::Type17,
7035 return applyImpR<
typename Base::Type18,
7040 return applyImpR<
typename Base::Type19,
7045 return applyImpR<
typename Base::Type20,
7056template <
class TYPES>
7063template <
class TYPES>
7064template <
class TYPE_OR_ALLOCATOR>
7069 bsl::integral_constant<bool,
bsl::is_convertible<TYPE_OR_ALLOCATOR,
7070 bslma::Allocator *>::value>())
7080template <
class TYPES>
7081template <
class TYPE>
7090 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
7091 this->getAllocator(),
7095template <
class TYPES>
7096template <
class TYPE>
7098#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7104 typename bsl::remove_reference<TYPE>::type>::type>::value
7114 typename bsl::remove_reference<TYPE>::type>::type>::value,
7119 typename bsl::remove_reference<TYPE>::type>::type> BufferType;
7121#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7123 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
7124 this->getAllocator(),
7127 TYPE& lvalue = value;
7129 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
7130 this->getAllocator(),
7135template <
class TYPES>
7136template <
class TYPE>
7138#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7144 typename bsl::remove_reference<TYPE>::type>::type>::value,
7153 typename bsl::remove_reference<TYPE>::type>::type>::value,
7158 typename bsl::remove_reference<TYPE>::type>::type> BufferType;
7160#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7162 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
7163 this->getAllocator(),
7166 TYPE& lvalue = value;
7168 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
7169 this->getAllocator(),
7174template <
class TYPES>
7177:
Base(original.d_type, basicAllocator)
7181 this->getAllocator());
7182 original.
apply(copyConstructor);
7186template <
class TYPES>
7189 MoveUtil::access(original).getAllocator())
7193 this->getAllocator());
7196 lvalue.
apply(moveConstructor);
7200template <
class TYPES>
7203:
Base(
MoveUtil::access(original).d_type, basicAllocator)
7207 this->getAllocator());
7210 lvalue.
apply(moveConstructor);
7214template <
class TYPES>
7222template <
class TYPES>
7223template <
class TYPE>
7228 return assign(value);
7231template <
class TYPES>
7232template <
class TYPE>
7234#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7245#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7248 TYPE& lvalue = value;
7249 return assign(MoveUtil::move(lvalue));
7253template <
class TYPES>
7258 if (this->d_type == rhs.d_type) {
7261 rhs.
apply(assigner);
7269 this->getAllocator());
7270 rhs.
apply(copyConstructor);
7271 this->d_type = rhs.d_type;
7279template <
class TYPES>
7285 if (&lvalue !=
this) {
7286 if (this->d_type == lvalue.d_type) {
7289 lvalue.
apply(assigner);
7294 if (lvalue.d_type) {
7297 this->getAllocator());
7298 lvalue.
apply(moveConstructor);
7299 this->d_type = lvalue.d_type;
7307template <
class TYPES>
7308template <
class RET_TYPE,
class VISITOR>
7313 return doApplyR<VISITOR&, RET_TYPE>(visitor, this->d_type);
7317 return visitor(nil);
7320template <
class TYPES>
7321template <
class RET_TYPE,
class VISITOR>
7326 return doApplyR<const VISITOR&, RET_TYPE>(visitor, this->d_type);
7331 return visitor(nil);
7334template <
class TYPES>
7335template <
class RET_TYPE,
class VISITOR,
class TYPE>
7340 return doApplyR<VISITOR&, RET_TYPE>(visitor, this->d_type);
7343 return visitor(defaultValue);
7346template <
class TYPES>
7347template <
class RET_TYPE,
class VISITOR,
class TYPE>
7350 const TYPE& defaultValue)
7353 return doApplyR<const VISITOR&, RET_TYPE>(visitor, this->d_type);
7357 return visitor(defaultValue);
7360template <
class TYPES>
7361template <
class RET_TYPE,
class VISITOR>
7367 return doApplyR<const Helper&, RET_TYPE>(Helper(&visitor), this->d_type);
7370template <
class TYPES>
7371template <
class RET_TYPE,
class VISITOR>
7377 return doApplyR<const Helper&, RET_TYPE>(Helper(&visitor), this->d_type);
7380template <
class TYPES>
7381template <
class TYPE>
7387 reinterpret_cast<BufferType *
>(&this->d_value)->
object() = value;
7390 assignImp<TYPE, TYPE>(value);
7396template <
class TYPES>
7397template <
class TYPE>
7398#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7407#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7409 typename bsl::remove_reference<TYPE>::type>::value
7411 reinterpret_cast<BufferType *
>(&this->d_value)->
object() =
7418 TYPE& lvalue = value;
7421 reinterpret_cast<BufferType *
>(&this->d_value)->
object() =
7422 MoveUtil::move(lvalue);
7425 assignImp<TYPE>(MoveUtil::move(lvalue));
7432template <
class TYPES>
7433template <
class TYPE,
class SOURCE_TYPE>
7440 reinterpret_cast<BufferType *
>(&this->d_value)->
object() = value;
7443 assignImp<TYPE, SOURCE_TYPE>(value);
7449#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
7451template <
class TYPES>
7452template <
class TYPE,
class... ARGS>
7457 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7462 this->getAllocator(),
7466 return bufR.object();
7471template <
class TYPES>
7481template <
class TYPES>
7484 if (!this->d_type) {
7485 if (!other.d_type) {
7491 else if (!other.d_type) {
7496 if (this->d_type == other.d_type
7497 && this->getAllocator() == other.getAllocator()) {
7502 other.
apply(swapper);
7509 bsl::swap(*
this, other);
7514template <
class TYPES>
7515template <
class TYPE>
7524 return reinterpret_cast<BufferType *
>(&this->d_value)->
object();
7528template <
class TYPES>
7529template <
class RET_TYPE,
class VISITOR>
7534 return doApplyR<VISITOR&, RET_TYPE>(visitor, this->d_type);
7538 return visitor(nil);
7541template <
class TYPES>
7542template <
class RET_TYPE,
class VISITOR>
7547 return doApplyR<const VISITOR&, RET_TYPE>(visitor, this->d_type);
7552 return visitor(nil);
7555template <
class TYPES>
7556template <
class RET_TYPE,
class VISITOR,
class TYPE>
7559 const TYPE& defaultValue)
const
7562 return doApplyR<VISITOR&, RET_TYPE>(visitor, this->d_type);
7565 return visitor(defaultValue);
7568template <
class TYPES>
7569template <
class RET_TYPE,
class VISITOR,
class TYPE>
7572 const TYPE& defaultValue)
const
7575 return doApplyR<const VISITOR&, RET_TYPE>(visitor, this->d_type);
7579 return visitor(defaultValue);
7582template <
class TYPES>
7583template <
class RET_TYPE,
class VISITOR>
7589 return doApplyR<const Helper&, RET_TYPE>(Helper(&visitor), this->d_type);
7592template <
class TYPES>
7593template <
class RET_TYPE,
class VISITOR>
7599 return doApplyR<const Helper&, RET_TYPE>(Helper(&visitor), this->d_type);
7602template <
class TYPES>
7603template <
class TYPE>
7610template <
class TYPES>
7614 return !this->d_type;
7617template <
class TYPES>
7621 int spacesPerLevel)
const
7626 doApply<const Variant_PrintVisitor&>(visitor, this->d_type);
7631template <
class TYPES>
7632template <
class TYPE>
7641 return reinterpret_cast<const BufferType *
>(&this->d_value)->
object();
7644template <
class TYPES>
7648 return this->d_type;
7651#ifndef BDE_OMIT_INTERNAL_DEPRECATED
7652template <
class TYPES>
7656 return typeid(void);
7659template <
class TYPES>
7660template <
class STREAM>
7666 if (!stream || type < 0 || 20 < type) {
7667 stream.invalidate();
7671 if (type != this->d_type) {
7676 this->getAllocator());
7677 doApply(defaultConstructor, type);
7680 this->d_type = type;
7685 doApply(streamer, type);
7690template <
class TYPES>
7697template <
class TYPES>
7698template <
class STREAM>
7706 Streamer streamer(stream, version);
7707 doApply<Streamer&>(streamer, this->d_type);
7717template <
class TYPES>
7719 const VariantImp<TYPES>& rhs)
7721 if (lhs.typeIndex() != rhs.typeIndex()) {
7725 if (0 == lhs.typeIndex()) {
7729 Variant_EqualityTestVisitor visitor(&rhs.d_value);
7732 return visitor.d_result;
7735template <
class TYPES>
7738 const VariantImp<TYPES>& rhs)
7740 return !(lhs == rhs);
7743template <
class TYPES>
7746 const VariantImp<TYPES>&
object)
7748 return object.print(stream, 0, -1);
7752template <
class TYPES>
7754void bdlb::swap(VariantImp<TYPES>& a, VariantImp<TYPES>& b)
7766#if defined(BDLB_VARIANT_USING_VARIADIC_TEMPLATES)
7767template <
class ...TYPES>
7773template <
class ...TYPES>
7774template <
class TYPE_OR_ALLOCATOR>
7777: Imp(valueOrAllocator)
7781template <
class ...TYPES>
7782template <
class TYPE>
7785: Imp(value, basicAllocator)
7789template <
class ...TYPES>
7790template <
class TYPE>
7793#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7794Variant(TYPE&& value,
7799 typename bsl::remove_reference<TYPE>::type>::type>::value
7805Variant(
bslmf::MovableRef<TYPE> value)
7806: Imp(MoveUtil::move(value))
7811template <
class ...TYPES>
7812template <
class TYPE>
7815#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7816Variant(TYPE&& value,
7821 typename bsl::remove_reference<TYPE>::type>::type>::value,
7825Variant(
bslmf::MovableRef<TYPE> value,
7826 bslma::Allocator *basicAllocator)
7827: Imp(MoveUtil::move(value), basicAllocator)
7834template <
class ...TYPES>
7838: Imp(static_cast<const Imp&>(original), basicAllocator)
7842template <
class ...TYPES>
7845: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
7849template <
class ...TYPES>
7853: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
7859template <
class ...TYPES>
7860template <
class TYPE>
7864 Imp::operator=(value);
7868template <
class ...TYPES>
7869template <
class TYPE>
7871#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7875Variant<TYPES...> >::type&
7882#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7885 TYPE& lvalue = value;
7886 Imp::operator=(MoveUtil::move(lvalue));
7892template <
class ...TYPES>
7899 Imp::operator=(
static_cast<const Imp&
>(rhs));
7903template <
class ...TYPES>
7910 Variant& lvalue = rhs;
7912 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
7917template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
7918 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
7919 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
7920 class A19,
class A20>
7922Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
7923 A13, A14, A15, A16, A17, A18, A19, A20>::Variant()
7927template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
7928 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
7929 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
7930 class A19,
class A20>
7931template <
class TYPE_OR_ALLOCATOR>
7933Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
7934 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
7935 const TYPE_OR_ALLOCATOR& valueOrAllocator)
7936:
Imp(valueOrAllocator)
7940template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
7941 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
7942 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
7943 class A19,
class A20>
7944template <
class TYPE>
7946Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
7947 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
7950:
Imp(value, basicAllocator)
7954template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
7955 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
7956 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
7957 class A19,
class A20>
7958template <
class TYPE>
7960Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
7961 A13, A14, A15, A16, A17, A18, A19, A20>::
7962#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7968 typename bsl::remove_reference<TYPE>::type>::type>::value
7980template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
7981 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
7982 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
7983 class A19,
class A20>
7984template <
class TYPE>
7986Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
7987 A13, A14, A15, A16, A17, A18, A19, A20>::
7988#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7994 typename bsl::remove_reference<TYPE>::type>::type>::value,
7999 bslma::Allocator *basicAllocator)
8005template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8006 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8007 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8008 class A19,
class A20>
8010Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8011 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
8014:
Imp(static_cast<const
Imp&>(original), basicAllocator)
8020template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8021 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8022 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8023 class A19,
class A20>
8025Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8026 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
8032template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8033 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8034 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8035 class A19,
class A20>
8037Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8038 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
8047template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8048 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8049 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8050 class A19,
class A20>
8051template <
class TYPE>
8053Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8054 A13, A14, A15, A16, A17, A18, A19, A20>&
8055Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8056 A13, A14, A15, A16, A17, A18, A19, A20>::operator=(
const TYPE& value)
8058 Imp::operator=(value);
8062template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8063 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8064 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8065 class A19,
class A20>
8066template <
class TYPE>
8068#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8071 A8, A9, A10, A11, A12, A13, A14,
8072 A15, A16, A17, A18, A19, A20>,
8074Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
8075 A16, A17, A18, A19, A20> >::type&
8076Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
8077 A16, A17, A18, A19, A20>::operator=(TYPE&& value)
8079Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
8080 A16, A17, A18, A19, A20>&
8081Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
8085#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8088 TYPE& lvalue = value;
8089 Imp::operator=(MoveUtil::move(lvalue));
8095template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8096 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8097 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8098 class A19,
class A20>
8100Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8101 A13, A14, A15, A16, A17, A18, A19, A20>&
8102Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8103 A13, A14, A15, A16, A17, A18, A19, A20>::operator=(
const Variant& rhs)
8108 Imp::operator=(
static_cast<const Imp&
>(rhs));
8112template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8113 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8114 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8115 class A19,
class A20>
8117Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8118 A13, A14, A15, A16, A17, A18, A19, A20>&
8119Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8120 A13, A14, A15, A16, A17, A18, A19, A20>::
8128 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8134#ifdef BDLB_VARIANT_USING_VARIADIC_TEMPLATES
8135#undef BDLB_VARIANT_USING_VARIADIC_TEMPLATES
8143template <
class A1,
class A2>
8149template <
class A1,
class A2>
8150template <
class TYPE_OR_ALLOCATOR>
8153:
Imp(valueOrAllocator)
8157template <
class A1,
class A2>
8158template <
class TYPE>
8162:
Imp(value, basicAllocator)
8166template <
class A1,
class A2>
8167template <
class TYPE>
8170#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8176 typename bsl::remove_reference<TYPE>::type>::type>::value
8188template <
class A1,
class A2>
8189template <
class TYPE>
8192#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8198 typename bsl::remove_reference<TYPE>::type>::type>::value,
8203 bslma::Allocator *basicAllocator)
8209template <
class A1,
class A2>
8213:
Imp(static_cast<const
Imp&>(original), basicAllocator)
8217template <
class A1,
class A2>
8224template <
class A1,
class A2>
8234template <
class A1,
class A2>
8235template <
class TYPE>
8240 Imp::operator=(value);
8244template <
class A1,
class A2>
8245template <
class TYPE>
8247#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8258#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8261 TYPE& lvalue = value;
8262 Imp::operator=(MoveUtil::move(lvalue));
8268template <
class A1,
class A2>
8273 Imp::operator=(
static_cast<const Imp&
>(rhs));
8277template <
class A1,
class A2>
8284 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8293template <
class A1,
class A2,
class A3>
8299template <
class A1,
class A2,
class A3>
8300template <
class TYPE_OR_ALLOCATOR>
8303Variant3(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8304:
Imp(valueOrAllocator)
8308template <
class A1,
class A2,
class A3>
8309template <
class TYPE>
8313:
Imp(value, basicAllocator)
8317template <
class A1,
class A2,
class A3>
8318template <
class TYPE>
8321#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8327 typename bsl::remove_reference<TYPE>::type>::type>::value
8339template <
class A1,
class A2,
class A3>
8340template <
class TYPE>
8343#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8349 typename bsl::remove_reference<TYPE>::type>::type>::value,
8354 bslma::Allocator *basicAllocator)
8360template <
class A1,
class A2,
class A3>
8364:
Imp(static_cast<const
Imp&>(original), basicAllocator)
8368template <
class A1,
class A2,
class A3>
8376template <
class A1,
class A2,
class A3>
8387template <
class A1,
class A2,
class A3>
8388template <
class TYPE>
8393 Imp::operator=(value);
8397template <
class A1,
class A2,
class A3>
8398template <
class TYPE>
8400#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8411#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8414 TYPE& lvalue = value;
8415 Imp::operator=(MoveUtil::move(lvalue));
8421template <
class A1,
class A2,
class A3>
8426 Imp::operator=(
static_cast<const Imp&
>(rhs));
8430template <
class A1,
class A2,
class A3>
8437 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8446template <
class A1,
class A2,
class A3,
class A4>
8452template <
class A1,
class A2,
class A3,
class A4>
8453template <
class TYPE_OR_ALLOCATOR>
8456Variant4(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8457:
Imp(valueOrAllocator)
8461template <
class A1,
class A2,
class A3,
class A4>
8462template <
class TYPE>
8466:
Imp(value, basicAllocator)
8470template <
class A1,
class A2,
class A3,
class A4>
8471template <
class TYPE>
8474#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8480 typename bsl::remove_reference<TYPE>::type>::type>::value
8492template <
class A1,
class A2,
class A3,
class A4>
8493template <
class TYPE>
8496#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8502 typename bsl::remove_reference<TYPE>::type>::type>::value,
8507 bslma::Allocator *basicAllocator)
8513template <
class A1,
class A2,
class A3,
class A4>
8517:
Imp(static_cast<const
Imp&>(original), basicAllocator)
8521template <
class A1,
class A2,
class A3,
class A4>
8529template <
class A1,
class A2,
class A3,
class A4>
8540template <
class A1,
class A2,
class A3,
class A4>
8541template <
class TYPE>
8546 Imp::operator=(value);
8550template <
class A1,
class A2,
class A3,
class A4>
8551template <
class TYPE>
8553#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8564#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8567 TYPE& lvalue = value;
8568 Imp::operator=(MoveUtil::move(lvalue));
8574template <
class A1,
class A2,
class A3,
class A4>
8579 Imp::operator=(
static_cast<const Imp&
>(rhs));
8583template <
class A1,
class A2,
class A3,
class A4>
8590 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8599template <
class A1,
class A2,
class A3,
class A4,
class A5>
8605template <
class A1,
class A2,
class A3,
class A4,
class A5>
8606template <
class TYPE_OR_ALLOCATOR>
8609Variant5(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8610:
Imp(valueOrAllocator)
8614template <
class A1,
class A2,
class A3,
class A4,
class A5>
8615template <
class TYPE>
8619:
Imp(value, basicAllocator)
8623template <
class A1,
class A2,
class A3,
class A4,
class A5>
8624template <
class TYPE>
8627#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8633 typename bsl::remove_reference<TYPE>::type>::type>::value
8645template <
class A1,
class A2,
class A3,
class A4,
class A5>
8646template <
class TYPE>
8649#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8655 typename bsl::remove_reference<TYPE>::type>::type>::value,
8660 bslma::Allocator *basicAllocator)
8666template <
class A1,
class A2,
class A3,
class A4,
class A5>
8670:
Imp(static_cast<const
Imp&>(original), basicAllocator)
8674template <
class A1,
class A2,
class A3,
class A4,
class A5>
8682template <
class A1,
class A2,
class A3,
class A4,
class A5>
8693template <
class A1,
class A2,
class A3,
class A4,
class A5>
8694template <
class TYPE>
8699 Imp::operator=(value);
8703template <
class A1,
class A2,
class A3,
class A4,
class A5>
8704template <
class TYPE>
8706#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8717#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8720 TYPE& lvalue = value;
8721 Imp::operator=(MoveUtil::move(lvalue));
8727template <
class A1,
class A2,
class A3,
class A4,
class A5>
8732 Imp::operator=(
static_cast<const Imp&
>(rhs));
8736template <
class A1,
class A2,
class A3,
class A4,
class A5>
8743 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8752template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8758template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8759template <
class TYPE_OR_ALLOCATOR>
8762Variant6(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8763:
Imp(valueOrAllocator)
8767template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8768template <
class TYPE>
8772:
Imp(value, basicAllocator)
8776template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8777template <
class TYPE>
8780#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8786 typename bsl::remove_reference<TYPE>::type>::type>::value
8798template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8799template <
class TYPE>
8802#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8808 typename bsl::remove_reference<TYPE>::type>::type>::value,
8813 bslma::Allocator *basicAllocator)
8819template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8823:
Imp(static_cast<const
Imp&>(original), basicAllocator)
8827template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8835template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8846template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8847template <
class TYPE>
8852 Imp::operator=(value);
8856template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8857template <
class TYPE>
8859#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8870#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8873 TYPE& lvalue = value;
8874 Imp::operator=(MoveUtil::move(lvalue));
8880template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8885 Imp::operator=(
static_cast<const Imp&
>(rhs));
8889template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8896 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8905template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
8911template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
8912template <
class TYPE_OR_ALLOCATOR>
8915Variant7(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8916:
Imp(valueOrAllocator)
8920template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
8921template <
class TYPE>
8925:
Imp(value, basicAllocator)
8929template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
8930template <
class TYPE>
8933#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8939 typename bsl::remove_reference<TYPE>::type>::type>::value
8951template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
8952template <
class TYPE>
8955#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8961 typename bsl::remove_reference<TYPE>::type>::type>::value,
8966 bslma::Allocator *basicAllocator)
8972template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
8976:
Imp(static_cast<const
Imp&>(original), basicAllocator)
8980template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
8988template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
8999template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9000template <
class TYPE>
9005 Imp::operator=(value);
9009template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9010template <
class TYPE>
9012#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9023#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9026 TYPE& lvalue = value;
9027 Imp::operator=(MoveUtil::move(lvalue));
9033template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9039 Imp::operator=(
static_cast<const Imp&
>(rhs));
9043template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9051 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9060template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9067template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9069template <
class TYPE_OR_ALLOCATOR>
9072Variant8(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9073:
Imp(valueOrAllocator)
9077template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9079template <
class TYPE>
9083:
Imp(value, basicAllocator)
9087template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9089template <
class TYPE>
9092#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9098 typename bsl::remove_reference<TYPE>::type>::type>::value
9110template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9112template <
class TYPE>
9115#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9121 typename bsl::remove_reference<TYPE>::type>::type>::value,
9126 bslma::Allocator *basicAllocator)
9132template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9137:
Imp(static_cast<const
Imp&>(original), basicAllocator)
9141template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9150template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9162template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9164template <
class TYPE>
9169 Imp::operator=(value);
9173template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9175template <
class TYPE>
9177#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9190#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9193 TYPE& lvalue = value;
9194 Imp::operator=(MoveUtil::move(lvalue));
9200template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9207 Imp::operator=(
static_cast<const Imp&
>(rhs));
9211template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9220 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9229template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9236template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9238template <
class TYPE_OR_ALLOCATOR>
9241Variant9(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9242:
Imp(valueOrAllocator)
9246template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9248template <
class TYPE>
9252:
Imp(value, basicAllocator)
9256template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9258template <
class TYPE>
9261#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9267 typename bsl::remove_reference<TYPE>::type>::type>::value
9279template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9281template <
class TYPE>
9284#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9290 typename bsl::remove_reference<TYPE>::type>::type>::value,
9295 bslma::Allocator *basicAllocator)
9301template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9306:
Imp(static_cast<const
Imp&>(original), basicAllocator)
9310template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9319template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9331template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9333template <
class TYPE>
9339 Imp::operator=(value);
9343template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9345template <
class TYPE>
9347#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9360#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9363 TYPE& lvalue = value;
9364 Imp::operator=(MoveUtil::move(lvalue));
9370template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9377 Imp::operator=(
static_cast<const Imp&
>(rhs));
9381template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9390 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9399template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9400 class A8,
class A9,
class A10>
9406template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9407 class A8,
class A9,
class A10>
9408template <
class TYPE_OR_ALLOCATOR>
9411Variant10(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9412:
Imp(valueOrAllocator)
9416template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9417 class A8,
class A9,
class A10>
9418template <
class TYPE>
9422:
Imp(value, basicAllocator)
9426template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9427 class A8,
class A9,
class A10>
9428template <
class TYPE>
9431#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9437 typename bsl::remove_reference<TYPE>::type>::type>::value
9449template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9450 class A8,
class A9,
class A10>
9451template <
class TYPE>
9454#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9460 typename bsl::remove_reference<TYPE>::type>::type>::value,
9465 bslma::Allocator *basicAllocator)
9471template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9472 class A8,
class A9,
class A10>
9476:
Imp(static_cast<const
Imp&>(original), basicAllocator)
9480template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9481 class A8,
class A9,
class A10>
9489template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9490 class A8,
class A9,
class A10>
9501template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9502 class A8,
class A9,
class A10>
9503template <
class TYPE>
9509 Imp::operator=(value);
9513template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9514 class A8,
class A9,
class A10>
9515template <
class TYPE>
9517#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9519 !
bsl::is_same<Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>,
9530#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9533 TYPE& lvalue = value;
9534 Imp::operator=(MoveUtil::move(lvalue));
9540template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9541 class A8,
class A9,
class A10>
9547 Imp::operator=(
static_cast<const Imp&
>(rhs));
9551template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9552 class A8,
class A9,
class A10>
9560 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9569template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9570 class A7,
class A8,
class A9,
class A10,
class A11>
9572Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9577template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9578 class A7,
class A8,
class A9,
class A10,
class A11>
9579template <
class TYPE_OR_ALLOCATOR>
9581Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9582Variant11(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9583:
Imp(valueOrAllocator)
9587template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9588 class A7,
class A8,
class A9,
class A10,
class A11>
9589template <
class TYPE>
9591Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9593:
Imp(value, basicAllocator)
9597template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9598 class A7,
class A8,
class A9,
class A10,
class A11>
9599template <
class TYPE>
9601Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9602#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9608 typename bsl::remove_reference<TYPE>::type>::type>::value
9620template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9621 class A7,
class A8,
class A9,
class A10,
class A11>
9622template <
class TYPE>
9624Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9625#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9631 typename bsl::remove_reference<TYPE>::type>::type>::value,
9636 bslma::Allocator *basicAllocator)
9642template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9643 class A7,
class A8,
class A9,
class A10,
class A11>
9645Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9647:
Imp(static_cast<const
Imp&>(original), basicAllocator)
9651template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9652 class A7,
class A8,
class A9,
class A10,
class A11>
9654Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9660template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9661 class A7,
class A8,
class A9,
class A10,
class A11>
9663Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9672template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9673 class A7,
class A8,
class A9,
class A10,
class A11>
9674template <
class TYPE>
9676Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>&
9677Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9680 Imp::operator=(value);
9684template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9685 class A7,
class A8,
class A9,
class A10,
class A11>
9686template <
class TYPE>
9688#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9690 !
bsl::is_same<Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>,
9692Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> >::type&
9693Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9696Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>&
9697Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9701#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9704 TYPE& lvalue = value;
9705 Imp::operator=(MoveUtil::move(lvalue));
9711template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9712 class A7,
class A8,
class A9,
class A10,
class A11>
9714Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>&
9715Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9718 Imp::operator=(
static_cast<const Imp&
>(rhs));
9722template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9723 class A7,
class A8,
class A9,
class A10,
class A11>
9725Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>&
9726Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9731 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9740template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9741 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9743Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9748template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9749 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9750template <
class TYPE_OR_ALLOCATOR>
9752Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9753Variant12(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9754:
Imp(valueOrAllocator)
9758template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9759 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9760template <
class TYPE>
9762Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9764:
Imp(value, basicAllocator)
9768template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9769 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9770template <
class TYPE>
9772Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9773#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9779 typename bsl::remove_reference<TYPE>::type>::type>::value
9791template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9792 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9793template <
class TYPE>
9795Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9796#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9802 typename bsl::remove_reference<TYPE>::type>::type>::value,
9807 bslma::Allocator *basicAllocator)
9813template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9814 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9816Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9818:
Imp(static_cast<const
Imp&>(original), basicAllocator)
9822template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9823 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9825Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9831template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9832 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9834Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9843template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9844 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9845template <
class TYPE>
9847Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>&
9848Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9851 Imp::operator=(value);
9855template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9856 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9857template <
class TYPE>
9859#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9861 !
bsl::is_same<Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>,
9863Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> >::type&
9864Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9867Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>&
9868Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9872#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9875 TYPE& lvalue = value;
9876 Imp::operator=(MoveUtil::move(lvalue));
9882template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9883 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9885Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>&
9886Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9889 Imp::operator=(
static_cast<const Imp&
>(rhs));
9893template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9894 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9896Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>&
9897Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9902 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9911template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9912 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
9915Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
9920template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9921 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
9923template <
class TYPE_OR_ALLOCATOR>
9925Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
9926Variant13(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9927:
Imp(valueOrAllocator)
9931template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9932 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
9934template <
class TYPE>
9936Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
9938:
Imp(value, basicAllocator)
9942template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9943 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
9945template <
class TYPE>
9947Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
9948#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9954 typename bsl::remove_reference<TYPE>::type>::type>::value
9966template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9967 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
9969template <
class TYPE>
9971Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
9972#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9978 typename bsl::remove_reference<TYPE>::type>::type>::value,
9983 bslma::Allocator *basicAllocator)
9989template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9990 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
9993Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
9995:
Imp(static_cast<const
Imp&>(original), basicAllocator)
9999template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10000 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10003Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10009template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10010 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10013Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10022template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10023 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10025template <
class TYPE>
10027Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>&
10028Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10031 Imp::operator=(value);
10035template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10036 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10038template <
class TYPE>
10040#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10042 !
bsl::is_same<
Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
10045Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> >::type&
10046Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10049Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>&
10050Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10054#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10057 TYPE& lvalue = value;
10058 Imp::operator=(MoveUtil::move(lvalue));
10064template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10065 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10068Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>&
10069Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10072 Imp::operator=(
static_cast<const Imp&
>(rhs));
10076template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10077 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10080Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>&
10081Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10086 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10095template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10096 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10097 class A13,
class A14>
10099Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10104template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10105 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10106 class A13,
class A14>
10107template <
class TYPE_OR_ALLOCATOR>
10109Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10110Variant14(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10111:
Imp(valueOrAllocator)
10115template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10116 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10117 class A13,
class A14>
10118template <
class TYPE>
10120Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10122:
Imp(value, basicAllocator)
10126template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10127 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10128 class A13,
class A14>
10129template <
class TYPE>
10131Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10132#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10138 typename bsl::remove_reference<TYPE>::type>::type>::value
10150template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10151 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10152 class A13,
class A14>
10153template <
class TYPE>
10155Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10156#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10162 typename bsl::remove_reference<TYPE>::type>::type>::value,
10167 bslma::Allocator *basicAllocator)
10173template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10174 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10175 class A13,
class A14>
10177Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10179:
Imp(static_cast<const
Imp&>(original), basicAllocator)
10183template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10184 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10185 class A13,
class A14>
10187Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10193template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10194 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10195 class A13,
class A14>
10197Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10206template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10207 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10208 class A13,
class A14>
10209template <
class TYPE>
10211Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>&
10212Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10215 Imp::operator=(value);
10219template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10220 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10221 class A13,
class A14>
10222template <
class TYPE>
10224#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10226 !
bsl::is_same<
Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
10229Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> >::type&
10230Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10233Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>&
10234Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10238#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10241 TYPE& lvalue = value;
10242 Imp::operator=(MoveUtil::move(lvalue));
10248template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10249 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10250 class A13,
class A14>
10252Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>&
10253Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10256 Imp::operator=(
static_cast<const Imp&
>(rhs));
10260template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10261 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10262 class A13,
class A14>
10264Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>&
10265Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10270 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10279template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10280 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10281 class A13,
class A14,
class A15>
10283Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10288template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10289 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10290 class A13,
class A14,
class A15>
10291template <
class TYPE_OR_ALLOCATOR>
10293Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10294Variant15(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10295:
Imp(valueOrAllocator)
10299template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10300 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10301 class A13,
class A14,
class A15>
10302template <
class TYPE>
10304Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10306:
Imp(value, basicAllocator)
10310template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10311 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10312 class A13,
class A14,
class A15>
10313template <
class TYPE>
10315Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10316#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10322 typename bsl::remove_reference<TYPE>::type>::type>::value
10334template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10335 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10336 class A13,
class A14,
class A15>
10337template <
class TYPE>
10339Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10340#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10346 typename bsl::remove_reference<TYPE>::type>::type>::value,
10351 bslma::Allocator *basicAllocator)
10357template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10358 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10359 class A13,
class A14,
class A15>
10361Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10363:
Imp(static_cast<const
Imp&>(original), basicAllocator)
10367template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10368 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10369 class A13,
class A14,
class A15>
10371Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10377template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10378 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10379 class A13,
class A14,
class A15>
10381Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10390template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10391 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10392 class A13,
class A14,
class A15>
10393template <
class TYPE>
10395Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>&
10396Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10399 Imp::operator=(value);
10403template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10404 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10405 class A13,
class A14,
class A15>
10406template <
class TYPE>
10408#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10410 !
bsl::is_same<
Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11,
10411 A12, A13, A14, A15>,
10413Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10415Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10418Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>&
10419Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10423#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10426 TYPE& lvalue = value;
10427 Imp::operator=(MoveUtil::move(lvalue));
10433template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10434 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10435 class A13,
class A14,
class A15>
10437Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>&
10438Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10441 Imp::operator=(
static_cast<const Imp&
>(rhs));
10445template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10446 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10447 class A13,
class A14,
class A15>
10449Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>&
10450Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10455 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10464template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10465 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10466 class A13,
class A14,
class A15,
class A16>
10468Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10474template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10475 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10476 class A13,
class A14,
class A15,
class A16>
10477template <
class TYPE_OR_ALLOCATOR>
10479Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10481Variant16(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10482:
Imp(valueOrAllocator)
10486template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10487 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10488 class A13,
class A14,
class A15,
class A16>
10489template <
class TYPE>
10491Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10494:
Imp(value, basicAllocator)
10498template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10499 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10500 class A13,
class A14,
class A15,
class A16>
10501template <
class TYPE>
10503Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10505#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10511 typename bsl::remove_reference<TYPE>::type>::type>::value
10523template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10524 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10525 class A13,
class A14,
class A15,
class A16>
10526template <
class TYPE>
10528Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10530#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10536 typename bsl::remove_reference<TYPE>::type>::type>::value,
10541 bslma::Allocator *basicAllocator)
10547template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10548 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10549 class A13,
class A14,
class A15,
class A16>
10551Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10554:
Imp(static_cast<const
Imp&>(original), basicAllocator)
10558template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10559 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10560 class A13,
class A14,
class A15,
class A16>
10562Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10569template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10570 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10571 class A13,
class A14,
class A15,
class A16>
10573Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10583template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10584 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10585 class A13,
class A14,
class A15,
class A16>
10586template <
class TYPE>
10588Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10590Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10592operator=(
const TYPE& value)
10594 Imp::operator=(value);
10598template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10599 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10600 class A13,
class A14,
class A15,
class A16>
10601template <
class TYPE>
10603#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10605 !
bsl::is_same<
Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11,
10606 A12, A13, A14, A15, A16>,
10608Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10610Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10611 A16>::operator=(TYPE&& value)
10613Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10615Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10619#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10622 TYPE& lvalue = value;
10623 Imp::operator=(MoveUtil::move(lvalue));
10629template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10630 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10631 class A13,
class A14,
class A15,
class A16>
10633Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10635Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10639 Imp::operator=(
static_cast<const Imp&
>(rhs));
10643template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10644 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10645 class A13,
class A14,
class A15,
class A16>
10647Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10649Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10655 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10664template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10665 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10666 class A13,
class A14,
class A15,
class A16,
class A17>
10668Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10674template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10675 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10676 class A13,
class A14,
class A15,
class A16,
class A17>
10677template <
class TYPE_OR_ALLOCATOR>
10679Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10681Variant17(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10682:
Imp(valueOrAllocator)
10686template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10687 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10688 class A13,
class A14,
class A15,
class A16,
class A17>
10689template <
class TYPE>
10691Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10694:
Imp(value, basicAllocator)
10698template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10699 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10700 class A13,
class A14,
class A15,
class A16,
class A17>
10701template <
class TYPE>
10703Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10705#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10711 typename bsl::remove_reference<TYPE>::type>::type>::value
10723template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10724 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10725 class A13,
class A14,
class A15,
class A16,
class A17>
10726template <
class TYPE>
10728Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10730#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10736 typename bsl::remove_reference<TYPE>::type>::type>::value,
10741 bslma::Allocator *basicAllocator)
10747template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10748 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10749 class A13,
class A14,
class A15,
class A16,
class A17>
10751Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10754:
Imp(static_cast<const
Imp&>(original), basicAllocator)
10758template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10759 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10760 class A13,
class A14,
class A15,
class A16,
class A17>
10762Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10769template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10770 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10771 class A13,
class A14,
class A15,
class A16,
class A17>
10773Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10783template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10784 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10785 class A13,
class A14,
class A15,
class A16,
class A17>
10786template <
class TYPE>
10788Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10790Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10792operator=(
const TYPE& value)
10794 Imp::operator=(value);
10798template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10799 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10800 class A13,
class A14,
class A15,
class A16,
class A17>
10801template <
class TYPE>
10803#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10805 !
bsl::is_same<
Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11,
10806 A12, A13, A14, A15, A16, A17>,
10808Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10810Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10811 A16, A17>::operator=(TYPE&& value)
10813Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10815Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10819#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10822 TYPE& lvalue = value;
10823 Imp::operator=(MoveUtil::move(lvalue));
10829template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10830 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10831 class A13,
class A14,
class A15,
class A16,
class A17>
10833Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10835Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10839 Imp::operator=(
static_cast<const Imp&
>(rhs));
10843template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10844 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10845 class A13,
class A14,
class A15,
class A16,
class A17>
10847Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10849Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10855 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10864template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10865 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10866 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
10868Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10869 A15, A16, A17, A18>::
10874template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10875 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10876 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
10877template <
class TYPE_OR_ALLOCATOR>
10879Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10880 A15, A16, A17, A18>::
10881Variant18(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10882:
Imp(valueOrAllocator)
10886template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10887 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10888 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
10889template <
class TYPE>
10891Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10892 A15, A16, A17, A18>::
10894:
Imp(value, basicAllocator)
10898template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10899 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10900 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
10901template <
class TYPE>
10903Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10904 A15, A16, A17, A18>::
10905#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10911 typename bsl::remove_reference<TYPE>::type>::type>::value
10923template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10924 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10925 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
10926template <
class TYPE>
10928Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10929 A15, A16, A17, A18>::
10930#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10936 typename bsl::remove_reference<TYPE>::type>::type>::value,
10941 bslma::Allocator *basicAllocator)
10947template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10948 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10949 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
10951Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10952 A15, A16, A17, A18>::
10954:
Imp(static_cast<const
Imp&>(original), basicAllocator)
10958template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10959 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10960 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
10962Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10963 A15, A16, A17, A18>::
10969template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10970 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10971 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
10973Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10974 A15, A16, A17, A18>::
10983template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10984 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10985 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
10986template <
class TYPE>
10988Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10989 A15, A16, A17, A18>&
10990Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10991 A15, A16, A17, A18>::
10992operator=(
const TYPE& value)
10994 Imp::operator=(value);
10998template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10999 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11000 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11001template <
class TYPE>
11003#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11005 !
bsl::is_same<
Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
11006 A11, A12, A13, A14, A15, A16, A17, A18>,
11008Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11009 A16, A17, A18> >::type&
11010Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11011 A16, A17, A18>::operator=(TYPE&& value)
11013Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11015Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11019#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11022 TYPE& lvalue = value;
11023 Imp::operator=(MoveUtil::move(lvalue));
11029template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11030 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11031 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11033Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11034 A15, A16, A17, A18>&
11035Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11036 A15, A16, A17, A18>::
11039 Imp::operator=(
static_cast<const Imp&
>(rhs));
11043template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11044 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11045 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11047Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11048 A15, A16, A17, A18>&
11049Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11050 A15, A16, A17, A18>::
11055 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
11064template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11065 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11066 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11069Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11070 A15, A16, A17, A18, A19>::
11075template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11076 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11077 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11079template <
class TYPE_OR_ALLOCATOR>
11081Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11082 A15, A16, A17, A18, A19>::
11083Variant19(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
11084:
Imp(valueOrAllocator)
11088template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11089 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11090 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11092template <
class TYPE>
11094Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11095 A15, A16, A17, A18, A19>::
11097:
Imp(value, basicAllocator)
11101template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11102 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11103 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11105template <
class TYPE>
11107Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11108 A15, A16, A17, A18, A19>::
11109#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11115 typename bsl::remove_reference<TYPE>::type>::type>::value
11127template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11128 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11129 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11131template <
class TYPE>
11133Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11134 A15, A16, A17, A18, A19>::
11135#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11141 typename bsl::remove_reference<TYPE>::type>::type>::value,
11146 bslma::Allocator *basicAllocator)
11152template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11153 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11154 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11157Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11158 A15, A16, A17, A18, A19>::
11160:
Imp(static_cast<const
Imp&>(original), basicAllocator)
11164template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11165 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11166 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11169Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11170 A15, A16, A17, A18, A19>::
11176template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11177 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11178 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11181Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11182 A15, A16, A17, A18, A19>::
11191template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11192 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11193 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11195template <
class TYPE>
11197Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11198 A15, A16, A17, A18, A19>&
11199Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11200 A15, A16, A17, A18, A19>::
11201operator=(
const TYPE& value)
11203 Imp::operator=(value);
11207template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11208 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11209 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11211template <
class TYPE>
11213#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11215 !
bsl::is_same<
Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
11216 A11, A12, A13, A14, A15, A16, A17, A18, A19>,
11218Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11219 A16, A17, A18, A19> >::type&
11220Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11221 A16, A17, A18, A19>::operator=(TYPE&& value)
11223Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11224 A16, A17, A18, A19>&
11225Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11229#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11232 TYPE& lvalue = value;
11233 Imp::operator=(MoveUtil::move(lvalue));
11239template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11240 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11241 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11244Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11245 A15, A16, A17, A18, A19>&
11246Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11247 A15, A16, A17, A18, A19>::
11250 Imp::operator=(
static_cast<const Imp&
>(rhs));
11254template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11255 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11256 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11259Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11260 A15, A16, A17, A18, A19>&
11261Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11262 A15, A16, A17, A18, A19>::
11267 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
Definition bdlb_variant.h:3997
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant10, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant10, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Variant10 & operator=(const TYPE &value)
Variant10 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION(Variant10, HasPrintMethod)
Variant10()
Definition bdlb_variant.h:9402
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant10, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Definition bdlb_variant.h:4184
Variant11 & operator=(const TYPE &value)
Variant11()
Definition bdlb_variant.h:9573
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant11, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant11, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Variant11 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION(Variant11, HasPrintMethod)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant11, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Definition bdlb_variant.h:4372
BSLMF_NESTED_TRAIT_DECLARATION(Variant12, HasPrintMethod)
Variant12 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant12, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Variant12()
Definition bdlb_variant.h:9744
Variant12 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant12, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant12, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Definition bdlb_variant.h:4561
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant13, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Variant13()
Definition bdlb_variant.h:9916
Variant13 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant13, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
BSLMF_NESTED_TRAIT_DECLARATION(Variant13, HasPrintMethod)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant13, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Variant13 & operator=(bslmf::MovableRef< TYPE > value)
Definition bdlb_variant.h:4752
Variant14 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant14, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant14, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Variant14 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION(Variant14, HasPrintMethod)
Variant14()
Definition bdlb_variant.h:10100
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant14, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Definition bdlb_variant.h:4944
BSLMF_NESTED_TRAIT_DECLARATION(Variant15, HasPrintMethod)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant15, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Variant15 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant15, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Variant15()
Definition bdlb_variant.h:10284
Variant15 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant15, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Definition bdlb_variant.h:5137
BSLMF_NESTED_TRAIT_DECLARATION(Variant16, HasPrintMethod)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant16, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Variant16 & operator=(const TYPE &value)
Variant16 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant16, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant16, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Definition bdlb_variant.h:5330
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant17, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Variant17 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant17, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant17, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
BSLMF_NESTED_TRAIT_DECLARATION(Variant17, HasPrintMethod)
Variant17 & operator=(bslmf::MovableRef< TYPE > value)
Definition bdlb_variant.h:5523
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant18, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant18, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
BSLMF_NESTED_TRAIT_DECLARATION(Variant18, HasPrintMethod)
Variant18 & operator=(bslmf::MovableRef< TYPE > value)
Variant18 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant18, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Definition bdlb_variant.h:5717
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant19, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Variant19 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant19, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Variant19 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant19, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
BSLMF_NESTED_TRAIT_DECLARATION(Variant19, HasPrintMethod)
Definition bdlb_variant.h:2514
BSLMF_NESTED_TRAIT_DECLARATION(Variant2, HasPrintMethod)
Variant2()
Definition bdlb_variant.h:8145
Variant2 & operator=(const TYPE &value)
Variant2 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant2, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant2, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant2, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Definition bdlb_variant.h:2698
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant3, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Variant3 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant3, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Variant3 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION(Variant3, HasPrintMethod)
Variant3()
Definition bdlb_variant.h:8295
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant3, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Definition bdlb_variant.h:2883
Variant4 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION(Variant4, HasPrintMethod)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant4, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant4, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Variant4()
Definition bdlb_variant.h:8448
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant4, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Variant4 & operator=(bslmf::MovableRef< TYPE > value)
Definition bdlb_variant.h:3068
Variant5()
Definition bdlb_variant.h:8601
Variant5 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant5, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
BSLMF_NESTED_TRAIT_DECLARATION(Variant5, HasPrintMethod)
Variant5 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant5, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant5, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Definition bdlb_variant.h:3253
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant6, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Variant6 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant6, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Variant6()
Definition bdlb_variant.h:8754
Variant6 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION(Variant6, HasPrintMethod)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant6, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Definition bdlb_variant.h:3439
BSLMF_NESTED_TRAIT_DECLARATION(Variant7, HasPrintMethod)
Variant7 & operator=(const TYPE &value)
Variant7 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant7, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant7, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant7, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Variant7()
Definition bdlb_variant.h:8907
Definition bdlb_variant.h:3625
Variant8()
Definition bdlb_variant.h:9063
Variant8 & operator=(bslmf::MovableRef< TYPE > value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant8, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
BSLMF_NESTED_TRAIT_DECLARATION(Variant8, HasPrintMethod)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant8, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant8, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Variant8 & operator=(const TYPE &value)
Definition bdlb_variant.h:3811
Variant9 & operator=(bslmf::MovableRef< TYPE > value)
Variant9()
Definition bdlb_variant.h:9232
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant9, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Variant9 & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant9, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant9, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
BSLMF_NESTED_TRAIT_DECLARATION(Variant9, HasPrintMethod)
Definition bdlb_variant.h:816
TYPES TypeList
Definition bdlb_variant.h:823
bslmf::TypeListTypeOf< 20, TYPES >::TypeOrDefault Type20
Definition bdlb_variant.h:848
bslmf::TypeListTypeOf< 10, TYPES >::TypeOrDefault Type10
Definition bdlb_variant.h:834
bslmf::TypeListTypeOf< 2, TYPES >::TypeOrDefault Type2
Definition bdlb_variant.h:826
bslmf::TypeListTypeOf< 8, TYPES >::TypeOrDefault Type8
Definition bdlb_variant.h:832
bslmf::TypeListTypeOf< 15, TYPES >::TypeOrDefault Type15
Definition bdlb_variant.h:839
bslmf::TypeListTypeOf< 14, TYPES >::TypeOrDefault Type14
Definition bdlb_variant.h:838
bslmf::TypeListTypeOf< 9, TYPES >::TypeOrDefault Type9
Definition bdlb_variant.h:833
BSLMF_NESTED_TRAIT_DECLARATION(VariantImp_AllocatorBase, bslma::UsesBslmaAllocator)
bslmf::TypeListTypeOf< 4, TYPES >::TypeOrDefault Type4
Definition bdlb_variant.h:828
bslmf::TypeListTypeOf< 7, TYPES >::TypeOrDefault Type7
Definition bdlb_variant.h:831
friend bool operator==(const VariantImp< VARIANT_TYPES > &, const VariantImp< VARIANT_TYPES > &)
bslmf::TypeListTypeOf< 6, TYPES >::TypeOrDefault Type6
Definition bdlb_variant.h:830
bslmf::TypeListTypeOf< 12, TYPES >::TypeOrDefault Type12
Definition bdlb_variant.h:836
bslmf::TypeListTypeOf< 11, TYPES >::TypeOrDefault Type11
Definition bdlb_variant.h:835
bslmf::TypeListTypeOf< 5, TYPES >::TypeOrDefault Type5
Definition bdlb_variant.h:829
bslmf::TypeListTypeOf< 16, TYPES >::TypeOrDefault Type16
Definition bdlb_variant.h:840
bslmf::TypeListTypeOf< 13, TYPES >::TypeOrDefault Type13
Definition bdlb_variant.h:837
bslma::Allocator * getAllocator() const
Return the allocator used by this object to supply memory.
Definition bdlb_variant.h:6387
bslmf::TypeListTypeOf< 18, TYPES >::TypeOrDefault Type18
Definition bdlb_variant.h:842
bslmf::TypeListTypeOf< 3, TYPES >::TypeOrDefault Type3
Definition bdlb_variant.h:827
bslmf::TypeListTypeOf< 19, TYPES >::TypeOrDefault Type19
Definition bdlb_variant.h:843
bslmf::TypeListTypeOf< 1, TYPES >::TypeOrDefault Type1
Definition bdlb_variant.h:825
VariantImp_AllocatorBase(int type, bslma::Allocator *basicAllocator)
Definition bdlb_variant.h:6358
bslmf::TypeListTypeOf< 17, TYPES >::TypeOrDefault Type17
Definition bdlb_variant.h:841
Definition bdlb_variant.h:931
bslma::Allocator * getAllocator() const
Return 0. Note that this object does not hold an allocator pointer.
Definition bdlb_variant.h:6426
bslmf::TypeListTypeOf< 17, TYPES >::TypeOrDefault Type17
Definition bdlb_variant.h:956
bslmf::TypeListTypeOf< 6, TYPES >::TypeOrDefault Type6
Definition bdlb_variant.h:945
bslmf::TypeListTypeOf< 4, TYPES >::TypeOrDefault Type4
Definition bdlb_variant.h:943
friend bool operator==(const VariantImp< VARIANT_TYPES > &, const VariantImp< VARIANT_TYPES > &)
bslmf::TypeListTypeOf< 8, TYPES >::TypeOrDefault Type8
Definition bdlb_variant.h:947
bslmf::TypeListTypeOf< 14, TYPES >::TypeOrDefault Type14
Definition bdlb_variant.h:953
bslmf::TypeListTypeOf< 1, TYPES >::TypeOrDefault Type1
Definition bdlb_variant.h:940
bslmf::TypeListTypeOf< 18, TYPES >::TypeOrDefault Type18
Definition bdlb_variant.h:957
bslmf::TypeListTypeOf< 10, TYPES >::TypeOrDefault Type10
Definition bdlb_variant.h:949
bslmf::TypeListTypeOf< 15, TYPES >::TypeOrDefault Type15
Definition bdlb_variant.h:954
bslmf::TypeListTypeOf< 2, TYPES >::TypeOrDefault Type2
Definition bdlb_variant.h:941
bslmf::TypeListTypeOf< 20, TYPES >::TypeOrDefault Type20
Definition bdlb_variant.h:963
bslmf::TypeListTypeOf< 7, TYPES >::TypeOrDefault Type7
Definition bdlb_variant.h:946
bslmf::TypeListTypeOf< 16, TYPES >::TypeOrDefault Type16
Definition bdlb_variant.h:955
bslmf::TypeListTypeOf< 12, TYPES >::TypeOrDefault Type12
Definition bdlb_variant.h:951
bslmf::TypeListTypeOf< 19, TYPES >::TypeOrDefault Type19
Definition bdlb_variant.h:958
bslmf::TypeListTypeOf< 3, TYPES >::TypeOrDefault Type3
Definition bdlb_variant.h:942
bslmf::TypeListTypeOf< 9, TYPES >::TypeOrDefault Type9
Definition bdlb_variant.h:948
TYPES TypeList
Definition bdlb_variant.h:938
bslmf::TypeListTypeOf< 13, TYPES >::TypeOrDefault Type13
Definition bdlb_variant.h:952
bslmf::TypeListTypeOf< 11, TYPES >::TypeOrDefault Type11
Definition bdlb_variant.h:950
bslmf::TypeListTypeOf< 5, TYPES >::TypeOrDefault Type5
Definition bdlb_variant.h:944
VariantImp_NoAllocatorBase(int type, bslma::Allocator *)
Definition bdlb_variant.h:6400
Definition bdlb_variant.h:1213
void reset()
Definition bdlb_variant.h:7472
STREAM & bdexStreamIn(STREAM &stream, int version)
DEPRECATED: Do not use.
Definition bdlb_variant.h:7661
VariantImp(const VariantImp &original, bslma::Allocator *basicAllocator=0)
Definition bdlb_variant.h:7175
VariantImp & operator=(bslmf::MovableRef< TYPE > value)
RET_TYPE apply(VISITOR &visitor, const TYPE &defaultValue)
Definition bdlb_variant.h:7337
BSLMF_NESTED_TRAIT_DECLARATION_IF(VariantImp, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type applyRaw(const VISITOR &visitor) const
Definition bdlb_variant.h:2169
RET_TYPE applyRaw(VISITOR &visitor) const
Definition bdlb_variant.h:7585
VariantImp(const TYPE &value, bslma::Allocator *basicAllocator)
Definition bdlb_variant.h:7083
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type apply(const VISITOR &visitor) const
Definition bdlb_variant.h:1917
bool is() const
Definition bdlb_variant.h:7605
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type applyRaw(const VISITOR &visitor) const
Definition bdlb_variant.h:2130
VariantImp & operator=(const VariantImp &rhs)
Definition bdlb_variant.h:7255
~VariantImp()
Definition bdlb_variant.h:7216
int typeIndex() const
Definition bdlb_variant.h:7646
RET_TYPE apply(VISITOR &visitor) const
Definition bdlb_variant.h:7531
RET_TYPE applyRaw(VISITOR &visitor)
Definition bdlb_variant.h:7363
VariantImp()
Definition bdlb_variant.h:7058
const bsl::type_info & typeInfo() const
Definition bdlb_variant.h:7654
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type apply(VISITOR &visitor) const
Definition bdlb_variant.h:1894
RET_TYPE applyRaw(const VISITOR &visitor)
Definition bdlb_variant.h:7373
RET_TYPE apply(VISITOR &visitor, const TYPE &defaultValue) const
Definition bdlb_variant.h:7558
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type apply(VISITOR &visitor)
Definition bdlb_variant.h:1517
VariantImp(bslmf::MovableRef< TYPE > value)
Definition bdlb_variant.h:7109
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type apply(VISITOR &visitor, const TYPE &defaultValue)
Definition bdlb_variant.h:1568
TYPE & createInPlace(ARGS &&... arguments)
Definition bdlb_variant.h:7454
VariantImp & assign(bslmf::MovableRef< TYPE > value)
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type apply(VISITOR &visitor, const TYPE &defaultValue) const
Definition bdlb_variant.h:1944
RET_TYPE applyRaw(const VISITOR &visitor) const
Definition bdlb_variant.h:7595
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type apply(const VISITOR &visitor)
Definition bdlb_variant.h:1638
VariantImp(bslmf::MovableRef< VariantImp > original, bslma::Allocator *basicAllocator)
Definition bdlb_variant.h:7201
RET_TYPE apply(const VISITOR &visitor, const TYPE &defaultValue) const
Definition bdlb_variant.h:7571
VariantImp & operator=(const TYPE &value)
STREAM & bdexStreamOut(STREAM &stream, int version) const
DEPRECATED: Do not use.
Definition bdlb_variant.h:7699
RET_TYPE apply(VISITOR &visitor)
Definition bdlb_variant.h:7310
VariantImp(const TYPE_OR_ALLOCATOR &valueOrAllocator)
Definition bdlb_variant.h:7066
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type apply(VISITOR &visitor, const TYPE &defaultValue)
Definition bdlb_variant.h:1664
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type applyRaw(const VISITOR &visitor)
Definition bdlb_variant.h:1758
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type applyRaw(VISITOR &visitor)
Definition bdlb_variant.h:1736
int maxSupportedBdexVersion() const
DEPRECATED: Do not use.
Definition bdlb_variant.h:7692
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type applyRaw(VISITOR &visitor) const
Definition bdlb_variant.h:2151
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type apply(const VISITOR &visitor) const
Definition bdlb_variant.h:2014
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type apply(const VISITOR &visitor, const TYPE &defaultValue)
Definition bdlb_variant.h:1594
BSLMF_NESTED_TRAIT_DECLARATION(VariantImp, HasPrintMethod)
BSLMF_NESTED_TRAIT_DECLARATION_IF(VariantImp, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
bool isUnset() const
Definition bdlb_variant.h:7612
TYPE & the()
Definition bdlb_variant.h:7517
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type apply(VISITOR &visitor)
Definition bdlb_variant.h:1616
RET_TYPE apply(const VISITOR &visitor)
Definition bdlb_variant.h:7323
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type apply(VISITOR &visitor, const TYPE &defaultValue) const
Definition bdlb_variant.h:2040
const TYPE & the() const
Definition bdlb_variant.h:7634
VariantImp & assign(const TYPE &value)
void swap(VariantImp &other)
Definition bdlb_variant.h:7482
VariantImp(bslmf::MovableRef< TYPE > value, bslma::Allocator *basicAllocator)
Definition bdlb_variant.h:7147
VariantImp(bslmf::MovableRef< VariantImp > original)
Definition bdlb_variant.h:7187
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type apply(const VISITOR &visitor, const TYPE &defaultValue) const
Definition bdlb_variant.h:1970
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type applyRaw(VISITOR &visitor) const
Definition bdlb_variant.h:2109
VariantImp & assignTo(const SOURCE_TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(VariantImp, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
RET_TYPE apply(const VISITOR &visitor, const TYPE &defaultValue)
Definition bdlb_variant.h:7349
RET_TYPE apply(const VISITOR &visitor) const
Definition bdlb_variant.h:7544
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type applyRaw(VISITOR &visitor)
Definition bdlb_variant.h:1779
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type applyRaw(const VISITOR &visitor)
Definition bdlb_variant.h:1797
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==1, typenameVISITOR::ResultType >::type apply(const VISITOR &visitor)
Definition bdlb_variant.h:1541
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type apply(VISITOR &visitor) const
Definition bdlb_variant.h:1992
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition bdlb_variant.h:7619
VariantImp & operator=(bslmf::MovableRef< VariantImp > rhs)
Definition bdlb_variant.h:7281
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type apply(const VISITOR &visitor, const TYPE &defaultValue)
Definition bdlb_variant.h:1689
bsl::enable_if< Variant_ReturnValueHelper< VISITOR >::value==0, void >::type apply(const VISITOR &visitor, const TYPE &defaultValue) const
Definition bdlb_variant.h:2065
Definition bdlb_variant.h:1152
RESULT_TYPE operator()(ARGUMENT_TYPE &argument)
Definition bdlb_variant.h:6450
Variant_RawVisitorHelper(VISITOR *visitor)
Definition bdlb_variant.h:6439
Definition bdlb_variant.h:2312
Variant(bslmf::MovableRef< Variant > original, bslma::Allocator *basicAllocator)
Definition bdlb_variant.h:8038
Variant & operator=(const Variant &rhs)
Definition bdlb_variant.h:8103
BSLMF_NESTED_TRAIT_DECLARATION(Variant, HasPrintMethod)
Variant(const TYPE &value, bslma::Allocator *basicAllocator)
Definition bdlb_variant.h:7947
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant, bslma::UsesBslmaAllocator, Traits::k_VARIANT_USES_BSLMA_ALLOCATOR)
Variant(bslmf::MovableRef< TYPE > value, bslma::Allocator *basicAllocator)
Definition bdlb_variant.h:7998
Variant & operator=(bslmf::MovableRef< Variant > rhs)
Definition bdlb_variant.h:8121
Variant & operator=(const TYPE &value)
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant, bslmf::IsBitwiseMoveable, Traits::k_VARIANT_IS_BITWISE_MOVEABLE)
Variant()
Definition bdlb_variant.h:7923
Variant(const TYPE_OR_ALLOCATOR &valueOrAllocator)
Definition bdlb_variant.h:7934
Variant(bslmf::MovableRef< TYPE > value)
Definition bdlb_variant.h:7974
Variant(const Variant &original, bslma::Allocator *basicAllocator=0)
Definition bdlb_variant.h:8011
BSLMF_NESTED_TRAIT_DECLARATION_IF(Variant, bslmf::IsBitwiseCopyable, Traits::k_VARIANT_IS_BITWISE_COPYABLE)
Variant(bslmf::MovableRef< Variant > original)
Definition bdlb_variant.h:8026
Variant & operator=(bslmf::MovableRef< TYPE > value)
static void swap(T *a, T *b)
Definition bslalg_swaputil.h:194
Definition bslma_allocator.h:457
Definition bslmf_movableref.h:751
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:229
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1804
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1762
#define BSLS_ASSERT_INVOKE_NORETURN(X)
Definition bsls_assert.h:1895
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
void reset(TYPE *object)
Reset the value of the specified object to its default value.
Definition bdlb_algorithmworkaroundutil.h:74
bool operator!=(const BigEndianInt16 &lhs, const BigEndianInt16 &rhs)
char Variant_ReturnValueHelper_YesType
Definition bdlb_variant.h:770
bsl::ostream & operator<<(bsl::ostream &stream, const BigEndianInt16 &integer)
void swap(NullableAllocatedValue< TYPE > &a, NullableAllocatedValue< TYPE > &b)
bool operator==(const BigEndianInt16 &lhs, const BigEndianInt16 &rhs)
Definition bdlb_printmethods.h:283
Definition balxml_encoderoptions.h:68
Definition bdlbb_blob.h:576
STREAM & bdexStreamIn(STREAM &stream, VALUE_TYPE &variable)
Definition bslx_instreamfunctions.h:1247
STREAM & bdexStreamOut(STREAM &stream, const TYPE &value)
Definition bslx_outstreamfunctions.h:992
Definition bdlb_printmethods.h:306
Definition bdlb_variant.h:1031
bslmf::TypeListTypeOf< 14, TYPES >::TypeOrDefault Type14
Definition bdlb_variant.h:1047
bsl::conditional< k_VARIANT_USES_BSLMA_ALLOCATOR, VariantImp_AllocatorBase< TYPES >, VariantImp_NoAllocatorBase< TYPES > >::type BaseType
Determines what the base type is.
Definition bdlb_variant.h:1132
bslmf::TypeListTypeOf< 7, TYPES >::TypeOrDefault Type7
Definition bdlb_variant.h:1040
bslmf::TypeListTypeOf< 12, TYPES >::TypeOrDefault Type12
Definition bdlb_variant.h:1045
bslmf::TypeListTypeOf< 18, TYPES >::TypeOrDefault Type18
Definition bdlb_variant.h:1051
bslmf::TypeListTypeOf< 6, TYPES >::TypeOrDefault Type6
Definition bdlb_variant.h:1039
bslmf::TypeListTypeOf< 13, TYPES >::TypeOrDefault Type13
Definition bdlb_variant.h:1046
bslmf::TypeListTypeOf< 19, TYPES >::TypeOrDefault Type19
Definition bdlb_variant.h:1052
bslmf::TypeListTypeOf< 17, TYPES >::TypeOrDefault Type17
Definition bdlb_variant.h:1050
bslmf::TypeListTypeOf< 3, TYPES >::TypeOrDefault Type3
Definition bdlb_variant.h:1036
bslmf::TypeListTypeOf< 11, TYPES >::TypeOrDefault Type11
Definition bdlb_variant.h:1044
@ VARIANT_USES_BSLMA_ALLOCATOR
Definition bdlb_variant.h:1122
@ VARIANT_IS_BITWISE_COPYABLE
Definition bdlb_variant.h:1123
@ k_VARIANT_IS_BITWISE_MOVEABLE
Definition bdlb_variant.h:1100
@ VARIANT_IS_BITWISE_MOVEABLE
Definition bdlb_variant.h:1124
@ k_VARIANT_USES_BSLMA_ALLOCATOR
Definition bdlb_variant.h:1056
@ k_VARIANT_IS_BITWISE_COPYABLE
Definition bdlb_variant.h:1078
bslmf::TypeListTypeOf< 1, TYPES >::TypeOrDefault Type1
Definition bdlb_variant.h:1034
bslmf::TypeListTypeOf< 8, TYPES >::TypeOrDefault Type8
Definition bdlb_variant.h:1041
bslmf::TypeListTypeOf< 2, TYPES >::TypeOrDefault Type2
Definition bdlb_variant.h:1035
bslmf::TypeListTypeOf< 16, TYPES >::TypeOrDefault Type16
Definition bdlb_variant.h:1049
bslmf::TypeListTypeOf< 5, TYPES >::TypeOrDefault Type5
Definition bdlb_variant.h:1038
bslmf::TypeListTypeOf< 20, TYPES >::TypeOrDefault Type20
Definition bdlb_variant.h:1053
bslmf::TypeListTypeOf< 15, TYPES >::TypeOrDefault Type15
Definition bdlb_variant.h:1048
bslmf::TypeListTypeOf< 4, TYPES >::TypeOrDefault Type4
Definition bdlb_variant.h:1037
bslmf::TypeListTypeOf< 9, TYPES >::TypeOrDefault Type9
Definition bdlb_variant.h:1042
bslmf::TypeListTypeOf< 10, TYPES >::TypeOrDefault Type10
Definition bdlb_variant.h:1043
Definition bdlb_variant.h:6203
Variant_BdexStreamInVisitor(STREAM &stream, int version)
Definition bdlb_variant.h:6210
int d_version
Definition bdlb_variant.h:6207
STREAM & d_stream
Definition bdlb_variant.h:6206
void operator()(VALUETYPE &object) const
Definition bdlb_variant.h:6219
void operator()(bslmf::Nil) const
Definition bdlb_variant.h:6225
Definition bdlb_variant.h:6241
void operator()(bslmf::Nil) const
Definition bdlb_variant.h:6263
void operator()(const VALUETYPE &object) const
Definition bdlb_variant.h:6257
STREAM & d_stream
Definition bdlb_variant.h:6244
Variant_BdexStreamOutVisitor(STREAM &stream, int version)
Definition bdlb_variant.h:6248
int d_version
Definition bdlb_variant.h:6245
Definition bdlb_variant.h:6111
void operator()(const TYPE &value)
Definition bdlb_variant.h:6126
Variant_CopyAssignVisitor(void *buffer)
Definition bdlb_variant.h:6118
void * d_buffer_p
Definition bdlb_variant.h:6114
Definition bdlb_variant.h:6029
void * d_buffer_p
Definition bdlb_variant.h:6032
void operator()(const TYPE &value) const
Definition bdlb_variant.h:6045
Variant_CopyConstructVisitor(void *buffer, bslma::Allocator *allocator)
Definition bdlb_variant.h:6036
bslma::Allocator * d_allocator_p
Definition bdlb_variant.h:6033
Definition bdlb_variant.h:6001
Variant_DefaultConstructVisitor(bslma::Allocator *allocator)
Definition bdlb_variant.h:6008
void operator()(TYPE &value) const
Definition bdlb_variant.h:6015
bslma::Allocator * d_allocator_p
Definition bdlb_variant.h:6004
Definition bdlb_variant.h:6093
void operator()(TYPE &object) const
Definition bdlb_variant.h:6097
Definition bdlb_variant.h:6318
const void * d_buffer_p
Definition bdlb_variant.h:6322
void operator()(bslmf::Nil) const
Definition bdlb_variant.h:6340
void operator()(const TYPE &value) const
Definition bdlb_variant.h:6335
bool d_result
Definition bdlb_variant.h:6321
Variant_EqualityTestVisitor(const void *buffer)
Definition bdlb_variant.h:6326
Definition bdlb_variant.h:6140
void operator()(TYPE &value)
Definition bdlb_variant.h:6155
void * d_buffer_p
Definition bdlb_variant.h:6143
Variant_MoveAssignVisitor(void *buffer)
Definition bdlb_variant.h:6147
Definition bdlb_variant.h:6062
void operator()(TYPE &value) const
Definition bdlb_variant.h:6078
void * d_buffer_p
Definition bdlb_variant.h:6065
bslma::Allocator * d_allocator_p
Definition bdlb_variant.h:6066
Variant_MoveConstructVisitor(void *buffer, bslma::Allocator *allocator)
Definition bdlb_variant.h:6069
Definition bdlb_variant.h:6278
void operator()(bslmf::Nil) const
Definition bdlb_variant.h:6303
Variant_PrintVisitor(bsl::ostream *stream, int level, int spacesPerLevel)
Definition bdlb_variant.h:6286
bsl::ostream * d_stream_p
Definition bdlb_variant.h:6281
void operator()(const TYPE &value) const
Definition bdlb_variant.h:6298
int d_level
Definition bdlb_variant.h:6282
int d_spacesPerLevel
Definition bdlb_variant.h:6283
Definition bdlb_variant.h:780
static Variant_ReturnValueHelper_YesType match(typename bsl::remove_reference< typename T::ResultType >::type *)
static Variant_ReturnValueHelper_NoType match(...)
Definition bdlb_variant.h:771
Definition bdlb_variant.h:802
Definition bdlb_variant.h:6170
void * d_buffer_p
Definition bdlb_variant.h:6173
Variant_SwapVisitor(void *buffer)
Definition bdlb_variant.h:6177
void operator()(TYPE &value)
Definition bdlb_variant.h:6185
Definition bdlb_variant.h:5906
@ value
Definition bdlb_variant.h:5909
Definition bslmf_conditional.h:120
Definition bslmf_enableif.h:525
Definition bslmf_integralconstant.h:244
Definition bslmf_isconvertible.h:867
Definition bslmf_issame.h:146
Definition bslmf_removeconst.h:156
bsl::remove_cv< typenamebsl::remove_reference< t_TYPE >::type >::type type
Definition bslmf_removecvref.h:136
static void construct(TARGET_TYPE *address, const ALLOCATOR &allocator)
Definition bslma_constructionutil.h:1243
Definition bslma_usesbslmaallocator.h:343
Definition bslmf_isbitwisecopyable.h:298
Definition bslmf_isbitwisemoveable.h:718
Definition bslmf_movableref.h:791
static MovableRef< t_TYPE > move(t_TYPE &reference) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1060
This struct is empty and represents a nil type.
Definition bslmf_nil.h:131
Definition bslmf_typelist.h:1856
Definition bslmf_typelist.h:1899
Definition bslmf_typelist.h:1945
Definition bslmf_typelist.h:1994
Definition bslmf_typelist.h:2046
Definition bslmf_typelist.h:2101
Definition bslmf_typelist.h:2159
Definition bslmf_typelist.h:2220
Definition bslmf_typelist.h:2284
Definition bslmf_typelist.h:2351
List of a three types t_A1, t_A2, t_A3 types.
Definition bslmf_typelist.h:1685
Definition bslmf_typelist.h:1703
Definition bslmf_typelist.h:1720
Definition bslmf_typelist.h:1743
Definition bslmf_typelist.h:1768
Definition bslmf_typelist.h:1795
Definition bslmf_typelist.h:1824
Definition bslmf_typelist.h:1609
Definition bsls_objectbuffer.h:276