11#ifndef INCLUDED_BDLB_VARIANT_CPP03
12#define INCLUDED_BDLB_VARIANT_CPP03
63#ifdef COMPILING_BDLB_VARIANT_H
65#if defined(BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES) \
66 && defined(BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES)
69#define BDLB_VARIANT_USING_VARIADIC_TEMPLATES
75struct Variant_CopyAssignVisitor;
76struct Variant_CopyConstructVisitor;
77struct Variant_DefaultConstructVisitor;
78struct Variant_DestructorVisitor;
79struct Variant_EqualityTestVisitor;
80struct Variant_MoveAssignVisitor;
81struct Variant_MoveConstructVisitor;
82struct Variant_PrintVisitor;
87template <
class TYPES,
class TYPE>
88struct Variant_TypeIndex;
97typedef struct {
char a[2]; } Variant_ReturnValueHelper_NoType;
100 !=
sizeof(Variant_ReturnValueHelper_NoType));
106struct Variant_ReturnValueHelper_Matcher {
113 typename bsl::remove_reference<typename T::ResultType>::type *);
115 static Variant_ReturnValueHelper_NoType
match(...);
123template <
class VISITOR>
124struct Variant_ReturnValueHelper
127 sizeof(Variant_ReturnValueHelper_Matcher::match<VISITOR>(0)) ==
128 sizeof(Variant_ReturnValueHelper_YesType)> {
141template <
class TYPES>
142class VariantImp_AllocatorBase {
213 template <
class VARIANT_TYPES>
216 template <
class VARIANT_TYPES>
217 friend bool operator==(
const VariantImp<VARIANT_TYPES>&,
218 const VariantImp<VARIANT_TYPES>&);
235 template <
class TYPE>
256template <
class TYPES>
257class VariantImp_NoAllocatorBase {
323 template <
class VARIANT_TYPES>
326 template <
class VARIANT_TYPES>
327 friend bool operator==(
const VariantImp<VARIANT_TYPES>&,
328 const VariantImp<VARIANT_TYPES>&);
339 template <
class TYPE>
356template <
class TYPES>
357struct VariantImp_Traits {
447#ifndef BDE_OMIT_INTERNAL_DEPRECATED
456 VariantImp_AllocatorBase<TYPES>,
457 VariantImp_NoAllocatorBase<TYPES> >::type
477template <
class RESULT_TYPE,
class VISITOR>
478class Variant_RawVisitorHelper {
495 template <
class ARGUMENT_TYPE>
496 RESULT_TYPE
operator()(ARGUMENT_TYPE& argument);
497 template <
class ARGUMENT_TYPE>
498 RESULT_TYPE
operator()(
const ARGUMENT_TYPE& argument);
504 template <
class ARGUMENT_TYPE>
505 RESULT_TYPE
operator()(ARGUMENT_TYPE& argument)
const;
506 template <
class ARGUMENT_TYPE>
507 RESULT_TYPE
operator()(
const ARGUMENT_TYPE& argument)
const;
538template <
class TYPES>
539class VariantImp :
public VariantImp_Traits<TYPES>::BaseType {
542 typedef VariantImp_Traits<TYPES> Traits;
547 typedef VariantImp<TYPES> SelfType;
558 template <
class TYPE,
class VISITOR_REF>
560 template <
class TYPE,
class VISITOR_REF>
562 template <
class TYPE,
class VISITOR_REF>
563 void applyImp(VISITOR_REF visitor);
572 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
574 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
576 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
577 RET_TYPE applyImpR(VISITOR_REF visitor);
583 template <
class TYPE,
class SOURCE_TYPE>
584 void assignImp(
const SOURCE_TYPE& value);
586 template <
class TYPE>
587#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
588 void assignImp(TYPE&& value);
601 template <
class TYPE>
611 template <
class VISITOR_REF>
612 void doApply(VISITOR_REF visitor,
int type);
619 template <
class VISITOR_REF,
class RET_TYPE>
620 RET_TYPE doApplyR(VISITOR_REF visitor,
int type);
630 template <
class TYPE,
class VISITOR_REF>
632 template <
class TYPE,
class VISITOR_REF>
634 template <
class TYPE,
class VISITOR_REF>
635 void applyImp(VISITOR_REF visitor)
const;
644 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
646 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
648 template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
649 RET_TYPE applyImpR(VISITOR_REF visitor)
const;
655 template <
class VISITOR_REF>
656 void doApply(VISITOR_REF visitor,
int type)
const;
663 template <
class VISITOR_REF,
class RET_TYPE>
664 RET_TYPE doApplyR(VISITOR_REF visitor,
int type)
const;
699 template <
class TYPE_OR_ALLOCATOR>
701 VariantImp(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
708 template <
class TYPE>
711 template <
class TYPE>
713#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
719 typename bsl::remove_reference<TYPE>::type>::type>::value
736 template <
class TYPE>
737#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
743 typename bsl::remove_reference<TYPE>::type>::type>::value,
793 template <
class TYPE>
796 template <
class TYPE>
797#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
840 template <
class VISITOR>
842 typename VISITOR::ResultType>::type
843 apply(VISITOR& visitor) {
846 return doApplyR<VISITOR&,
847 typename VISITOR::ResultType>(visitor, this->d_type);
864 template <
class VISITOR>
866 typename VISITOR::ResultType>::type
867 apply(
const VISITOR& visitor) {
870 return doApplyR<
const VISITOR&,
871 typename VISITOR::ResultType>(visitor, this->d_type);
891 template <
class VISITOR,
class TYPE>
893 typename VISITOR::ResultType>::type
894 apply(VISITOR& visitor,
const TYPE& defaultValue) {
897 return doApplyR<VISITOR&,
898 typename VISITOR::ResultType>(visitor, this->d_type);
902 return visitor(defaultValue);
917 template <
class VISITOR,
class TYPE>
919 typename VISITOR::ResultType>::type
920 apply(
const VISITOR& visitor,
const TYPE& defaultValue) {
923 return doApplyR<
const VISITOR&,
924 typename VISITOR::ResultType>(visitor, this->d_type);
928 return visitor(defaultValue);
939 template <
class VISITOR>
942 apply(VISITOR& visitor) {
945 doApply<VISITOR&>(visitor, this->d_type);
961 template <
class VISITOR>
964 apply(
const VISITOR& visitor) {
967 doApply<const VISITOR&>(visitor, this->d_type);
987 template <
class VISITOR,
class TYPE>
990 apply(VISITOR& visitor,
const TYPE& defaultValue) {
993 doApply<VISITOR&>(visitor, this->d_type);
997 visitor(defaultValue);
1012 template <
class VISITOR,
class TYPE>
1015 apply(
const VISITOR& visitor,
const TYPE& defaultValue) {
1018 doApply<const VISITOR&>(visitor, this->d_type);
1022 visitor(defaultValue);
1031 template <
class RET_TYPE,
class VISITOR>
1032 RET_TYPE
apply(VISITOR& visitor);
1033 template <
class RET_TYPE,
class VISITOR>
1034 RET_TYPE
apply(
const VISITOR& visitor);
1045 template <
class RET_TYPE,
class VISITOR,
class TYPE>
1046 RET_TYPE
apply(VISITOR& visitor,
const TYPE& defaultValue);
1047 template <
class RET_TYPE,
class VISITOR,
class TYPE>
1048 RET_TYPE
apply(
const VISITOR& visitor,
const TYPE& defaultValue);
1059 template <
class VISITOR>
1061 typename VISITOR::ResultType>::type
1064 typedef Variant_RawVisitorHelper<
typename VISITOR::ResultType,
1067 return doApplyR<
const Helper&,
1068 typename VISITOR::ResultType>(Helper(&visitor),
1081 template <
class VISITOR>
1083 typename VISITOR::ResultType>::type
1086 typedef Variant_RawVisitorHelper<
typename VISITOR::ResultType,
1087 const VISITOR> Helper;
1089 return doApplyR<
const Helper&,
1090 typename VISITOR::ResultType>(Helper(&visitor),
1102 template <
class VISITOR>
1107 typedef Variant_RawVisitorHelper<void, VISITOR> Helper;
1109 doApply<const Helper&>(Helper(&visitor), this->d_type);
1120 template <
class VISITOR>
1125 typedef Variant_RawVisitorHelper<void, const VISITOR> Helper;
1127 doApply<const Helper&>(Helper(&visitor), this->d_type);
1135 template <
class RET_TYPE,
class VISITOR>
1136 RET_TYPE
applyRaw(VISITOR& visitor);
1137 template <
class RET_TYPE,
class VISITOR>
1138 RET_TYPE
applyRaw(
const VISITOR& visitor);
1145 template <
class TYPE>
1148 template <
class TYPE>
1149#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1169 template <
class TYPE,
class SOURCE_TYPE>
1172#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1175#ifndef BDLB_VARIANT_VARIADIC_LIMIT
1176#define BDLB_VARIANT_VARIADIC_LIMIT 14
1178#ifndef BDLB_VARIANT_VARIADIC_LIMIT_A
1179#define BDLB_VARIANT_VARIADIC_LIMIT_A BDLB_VARIANT_VARIADIC_LIMIT
1182#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 0
1183 template <
class TYPE>
1187#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 1
1188 template <
class TYPE,
class ARGS_01>
1193#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 2
1194 template <
class TYPE,
class ARGS_01,
1201#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 3
1202 template <
class TYPE,
class ARGS_01,
1211#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 4
1212 template <
class TYPE,
class ARGS_01,
1223#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 5
1224 template <
class TYPE,
class ARGS_01,
1237#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 6
1238 template <
class TYPE,
class ARGS_01,
1253#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 7
1254 template <
class TYPE,
class ARGS_01,
1271#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 8
1272 template <
class TYPE,
class ARGS_01,
1291#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 9
1292 template <
class TYPE,
class ARGS_01,
1313#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 10
1314 template <
class TYPE,
class ARGS_01,
1337#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 11
1338 template <
class TYPE,
class ARGS_01,
1363#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 12
1364 template <
class TYPE,
class ARGS_01,
1391#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 13
1392 template <
class TYPE,
class ARGS_01,
1421#if BDLB_VARIANT_VARIADIC_LIMIT_A >= 14
1422 template <
class TYPE,
class ARGS_01,
1457 template <
class TYPE,
class... ARGS>
1479 template <
class TYPE>
1492 template <
class VISITOR>
1494 typename VISITOR::ResultType>::type
1495 apply(VISITOR& visitor)
const {
1498 return doApplyR<VISITOR&,
1499 typename VISITOR::ResultType>(visitor, this->d_type);
1504 return visitor(nil);
1515 template <
class VISITOR>
1517 typename VISITOR::ResultType>::type
1518 apply(
const VISITOR& visitor)
const {
1521 return doApplyR<
const VISITOR&,
1522 typename VISITOR::ResultType>(visitor, this->d_type);
1527 return visitor(nil);
1542 template <
class VISITOR,
class TYPE>
1544 typename VISITOR::ResultType>::type
1545 apply(VISITOR& visitor,
const TYPE& defaultValue)
const {
1548 return doApplyR<VISITOR&,
1549 typename VISITOR::ResultType>(visitor, this->d_type);
1553 return visitor(defaultValue);
1568 template <
class VISITOR,
class TYPE>
1570 typename VISITOR::ResultType>::type
1571 apply(
const VISITOR& visitor,
const TYPE& defaultValue)
const {
1574 return doApplyR<
const VISITOR&,
1575 typename VISITOR::ResultType>(visitor, this->d_type);
1579 return visitor(defaultValue);
1590 template <
class VISITOR>
1593 apply(VISITOR& visitor)
const {
1596 doApply<VISITOR&>(visitor, this->d_type);
1612 template <
class VISITOR>
1615 apply(
const VISITOR& visitor)
const {
1618 doApply<const VISITOR&>(visitor, this->d_type);
1638 template <
class VISITOR,
class TYPE>
1641 apply(VISITOR& visitor,
const TYPE& defaultValue)
const {
1644 doApply<VISITOR&>(visitor, this->d_type);
1648 visitor(defaultValue);
1663 template <
class VISITOR,
class TYPE>
1666 apply(
const VISITOR& visitor,
const TYPE& defaultValue)
const {
1669 doApply<const VISITOR&>(visitor, this->d_type);
1673 visitor(defaultValue);
1681 template <
class RET_TYPE,
class VISITOR>
1682 RET_TYPE
apply(VISITOR& visitor)
const;
1683 template <
class RET_TYPE,
class VISITOR>
1684 RET_TYPE
apply(
const VISITOR& visitor)
const;
1694 template <
class RET_TYPE,
class VISITOR,
class TYPE>
1695 RET_TYPE
apply(VISITOR& visitor,
const TYPE& defaultValue)
const;
1696 template <
class RET_TYPE,
class VISITOR,
class TYPE>
1697 RET_TYPE
apply(
const VISITOR& visitor,
const TYPE& defaultValue)
const;
1707 template <
class VISITOR>
1709 typename VISITOR::ResultType>::type
1712 typedef Variant_RawVisitorHelper<
typename VISITOR::ResultType,
1715 return doApplyR<
const Helper&,
1716 typename VISITOR::ResultType>(Helper(&visitor),
1728 template <
class VISITOR>
1730 typename VISITOR::ResultType>::type
1731 applyRaw(
const VISITOR& visitor)
const {
1733 typedef Variant_RawVisitorHelper<
typename VISITOR::ResultType,
1734 const VISITOR> Helper;
1736 return doApplyR<
const Helper&,
1737 typename VISITOR::ResultType>(Helper(&visitor),
1749 template <
class VISITOR>
1754 typedef Variant_RawVisitorHelper<void, VISITOR> Helper;
1756 return doApply<const Helper&>(Helper(&visitor), this->d_type);
1767 template <
class VISITOR>
1770 applyRaw(
const VISITOR& visitor)
const {
1772 typedef Variant_RawVisitorHelper<void, const VISITOR> Helper;
1774 return doApply<const Helper&>(Helper(&visitor), this->d_type);
1781 template <
class RET_TYPE,
class VISITOR>
1782 RET_TYPE
applyRaw(VISITOR& visitor)
const;
1783 template <
class RET_TYPE,
class VISITOR>
1784 RET_TYPE
applyRaw(
const VISITOR& visitor)
const;
1790 template <
class TYPE>
1815 bsl::ostream&
print(bsl::ostream& stream,
1817 int spacesPerLevel = 4)
const;
1825 template <
class TYPE>
1826 const TYPE&
the()
const;
1835#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1839 const bsl::type_info&
typeInfo()
const;
1842 template <
class STREAM>
1849 template <
class STREAM>
1861template <
class TYPES>
1863 const VariantImp<TYPES>& rhs);
1870template <
class TYPES>
1872 const VariantImp<TYPES>& rhs);
1877template <
class TYPES>
1878bsl::ostream&
operator<<(bsl::ostream& stream,
1879 const VariantImp<TYPES>&
object);
1887template <
class TYPES>
1888void swap(VariantImp<TYPES>& a, VariantImp<TYPES>& b);
1894#if defined(BDLB_VARIANT_USING_VARIADIC_TEMPLATES)
1895template <
class ...TYPES>
1896class Variant :
public VariantImp<typename bslmf::TypeList<TYPES...>::ListType>
1911 A6, A7, A8, A9, A10,
1912 A11, A12, A13, A14, A15,
1913 A16, A17, A18, A19, A20>::ListType> {
1923#if defined(BDLB_VARIANT_USING_VARIADIC_TEMPLATES)
1927 typedef Variant<TYPES...> SelfType;
1930 A7, A8, A9, A10, A11, A12,
1931 A13, A14, A15, A16, A17, A18,
1932 A19, A20>::ListType> Imp;
1934 typedef Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
1935 A11, A12, A13, A14, A15, A16, A17, A18, A19, A20> SelfType;
1939 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
1975 template <
class TYPE_OR_ALLOCATOR>
1977 Variant(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
1984 template <
class TYPE>
1987 template <
class TYPE>
1989#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
1995 typename bsl::remove_reference<TYPE>::type>::type>::value
2012 template <
class TYPE>
2013#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2019 typename bsl::remove_reference<TYPE>::type>::type>::value,
2064 template <
class TYPE>
2067 template <
class TYPE>
2068#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2113template <
class A1,
class A2>
2114class Variant2 :
public VariantImp<typename bslmf::TypeList2<
2115 A1, A2>::ListType> {
2118 typedef VariantImp<typename bslmf::TypeList2<A1, A2>::ListType> Imp;
2121 typedef Variant2<A1, A2> SelfType;
2123 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
2130 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
2133 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
2136 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
2159 template <
class TYPE_OR_ALLOCATOR>
2161 Variant2(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
2168 template <
class TYPE>
2171 template <
class TYPE>
2173#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2174 Variant2(TYPE&& value,
2179 typename bsl::remove_reference<TYPE>::type>::type>::value
2196 template <
class TYPE>
2197#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2198 Variant2(TYPE&& value,
2203 typename bsl::remove_reference<TYPE>::type>::type>::value,
2248 template <
class TYPE>
2249 Variant2& operator=(
const TYPE& value);
2251 template <
class TYPE>
2252#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2257 operator=(TYPE&& value);
2277 Variant2& operator=(
const Variant2& rhs);
2297template <
class A1,
class A2,
class A3>
2298class Variant3 :
public VariantImp<typename bslmf::TypeList3<
2299 A1, A2, A3>::ListType> {
2306 typedef Variant3<A1, A2, A3> SelfType;
2308 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
2315 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
2318 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
2321 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
2344 template <
class TYPE_OR_ALLOCATOR>
2346 Variant3(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
2353 template <
class TYPE>
2356 template <
class TYPE>
2358#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2359 Variant3(TYPE&& value,
2364 typename bsl::remove_reference<TYPE>::type>::type>::value
2381 template <
class TYPE>
2382#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2383 Variant3(TYPE&& value,
2388 typename bsl::remove_reference<TYPE>::type>::type>::value,
2433 template <
class TYPE>
2434 Variant3& operator=(
const TYPE& value);
2436 template <
class TYPE>
2437#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2442 operator=(TYPE&& value);
2462 Variant3& operator=(
const Variant3& rhs);
2482template <
class A1,
class A2,
class A3,
class A4>
2483class Variant4 :
public VariantImp<typename bslmf::TypeList4<
2484 A1, A2, A3, A4>::ListType> {
2491 typedef Variant4<A1, A2, A3, A4> SelfType;
2493 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
2500 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
2503 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
2506 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
2529 template <
class TYPE_OR_ALLOCATOR>
2531 Variant4(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
2538 template <
class TYPE>
2541 template <
class TYPE>
2543#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2544 Variant4(TYPE&& value,
2549 typename bsl::remove_reference<TYPE>::type>::type>::value
2566 template <
class TYPE>
2567#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2568 Variant4(TYPE&& value,
2573 typename bsl::remove_reference<TYPE>::type>::type>::value,
2618 template <
class TYPE>
2619 Variant4& operator=(
const TYPE& value);
2621 template <
class TYPE>
2622#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2627 operator=(TYPE&& value);
2647 Variant4& operator=(
const Variant4& rhs);
2667template <
class A1,
class A2,
class A3,
class A4,
class A5>
2668class Variant5 :
public VariantImp<typename bslmf::TypeList5<
2669 A1, A2, A3, A4, A5>::ListType> {
2676 typedef Variant5<A1, A2, A3, A4, A5> SelfType;
2678 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
2685 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
2688 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
2691 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
2714 template <
class TYPE_OR_ALLOCATOR>
2716 Variant5(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
2723 template <
class TYPE>
2726 template <
class TYPE>
2728#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2729 Variant5(TYPE&& value,
2734 typename bsl::remove_reference<TYPE>::type>::type>::value
2751 template <
class TYPE>
2752#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2753 Variant5(TYPE&& value,
2758 typename bsl::remove_reference<TYPE>::type>::type>::value,
2803 template <
class TYPE>
2804 Variant5& operator=(
const TYPE& value);
2806 template <
class TYPE>
2807#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2812 operator=(TYPE&& value);
2832 Variant5& operator=(
const Variant5& rhs);
2852template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
2853class Variant6 :
public VariantImp<typename bslmf::TypeList6<
2854 A1, A2, A3, A4, A5, A6>::ListType> {
2861 typedef Variant6<A1, A2, A3, A4, A5, A6> SelfType;
2863 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
2870 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
2873 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
2876 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
2899 template <
class TYPE_OR_ALLOCATOR>
2901 Variant6(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
2908 template <
class TYPE>
2911 template <
class TYPE>
2913#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2914 Variant6(TYPE&& value,
2919 typename bsl::remove_reference<TYPE>::type>::type>::value
2936 template <
class TYPE>
2937#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2938 Variant6(TYPE&& value,
2943 typename bsl::remove_reference<TYPE>::type>::type>::value,
2988 template <
class TYPE>
2989 Variant6& operator=(
const TYPE& value);
2991 template <
class TYPE>
2992#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
2997 operator=(TYPE&& value);
3017 Variant6& operator=(
const Variant6& rhs);
3037template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3039class Variant7 :
public VariantImp<typename bslmf::TypeList7<
3040 A1, A2, A3, A4, A5, A6, A7>::ListType> {
3047 typedef Variant7<A1, A2, A3, A4, A5, A6, A7> SelfType;
3049 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
3056 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3059 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3062 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3085 template <
class TYPE_OR_ALLOCATOR>
3087 Variant7(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3094 template <
class TYPE>
3097 template <
class TYPE>
3099#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3100 Variant7(TYPE&& value,
3105 typename bsl::remove_reference<TYPE>::type>::type>::value
3122 template <
class TYPE>
3123#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3124 Variant7(TYPE&& value,
3129 typename bsl::remove_reference<TYPE>::type>::type>::value,
3174 template <
class TYPE>
3175 Variant7& operator=(
const TYPE& value);
3177 template <
class TYPE>
3178#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3183 operator=(TYPE&& value);
3203 Variant7& operator=(
const Variant7& rhs);
3223template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3225class Variant8 :
public VariantImp<typename bslmf::TypeList8<
3226 A1, A2, A3, A4, A5, A6, A7, A8>::ListType> {
3233 typedef Variant8<A1, A2, A3, A4, A5, A6, A7, A8> SelfType;
3235 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
3242 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3245 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3248 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3271 template <
class TYPE_OR_ALLOCATOR>
3273 Variant8(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3280 template <
class TYPE>
3283 template <
class TYPE>
3285#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3286 Variant8(TYPE&& value,
3291 typename bsl::remove_reference<TYPE>::type>::type>::value
3308 template <
class TYPE>
3309#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3310 Variant8(TYPE&& value,
3315 typename bsl::remove_reference<TYPE>::type>::type>::value,
3360 template <
class TYPE>
3361 Variant8& operator=(
const TYPE& value);
3363 template <
class TYPE>
3364#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3369 operator=(TYPE&& value);
3389 Variant8& operator=(
const Variant8& rhs);
3409template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3410 class A7,
class A8,
class A9>
3411class Variant9 :
public VariantImp<typename bslmf::TypeList9<
3412 A1, A2, A3, A4, A5, A6, A7, A8, A9>::ListType> {
3416 A8, A9>::ListType> Imp;
3419 typedef Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9> SelfType;
3421 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
3428 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3431 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3434 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3457 template <
class TYPE_OR_ALLOCATOR>
3459 Variant9(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3466 template <
class TYPE>
3469 template <
class TYPE>
3471#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3472 Variant9(TYPE&& value,
3477 typename bsl::remove_reference<TYPE>::type>::type>::value
3494 template <
class TYPE>
3495#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3496 Variant9(TYPE&& value,
3501 typename bsl::remove_reference<TYPE>::type>::type>::value,
3546 template <
class TYPE>
3547 Variant9& operator=(
const TYPE& value);
3549 template <
class TYPE>
3550#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3555 operator=(TYPE&& value);
3575 Variant9& operator=(
const Variant9& rhs);
3595template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3596 class A7,
class A8,
class A9,
class A10>
3597class Variant10 :
public VariantImp<typename bslmf::TypeList10<
3598 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::ListType> {
3603 A10>::ListType> Imp;
3606 typedef Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> SelfType;
3608 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
3615 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3618 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3621 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3644 template <
class TYPE_OR_ALLOCATOR>
3646 Variant10(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3653 template <
class TYPE>
3656 template <
class TYPE>
3658#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3659 Variant10(TYPE&& value,
3664 typename bsl::remove_reference<TYPE>::type>::type>::value
3681 template <
class TYPE>
3682#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3683 Variant10(TYPE&& value,
3688 typename bsl::remove_reference<TYPE>::type>::type>::value,
3708 Variant10(
const Variant10& original,
bslma::Allocator *basicAllocator = 0);
3733 template <
class TYPE>
3734 Variant10& operator=(
const TYPE& value);
3736 template <
class TYPE>
3737#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3742 operator=(TYPE&& value);
3762 Variant10& operator=(
const Variant10& rhs);
3782template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3783 class A7,
class A8,
class A9,
class A10,
class A11>
3784class Variant11 :
public VariantImp<typename bslmf::TypeList11<
3785 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::ListType> {
3790 A11>::ListType> Imp;
3793 typedef Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
3796 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
3803 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3806 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3809 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
3832 template <
class TYPE_OR_ALLOCATOR>
3834 Variant11(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
3841 template <
class TYPE>
3844 template <
class TYPE>
3846#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3847 Variant11(TYPE&& value,
3852 typename bsl::remove_reference<TYPE>::type>::type>::value
3869 template <
class TYPE>
3870#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3871 Variant11(TYPE&& value,
3876 typename bsl::remove_reference<TYPE>::type>::type>::value,
3896 Variant11(
const Variant11& original,
bslma::Allocator *basicAllocator = 0);
3921 template <
class TYPE>
3922 Variant11& operator=(
const TYPE& value);
3924 template <
class TYPE>
3925#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
3930 operator=(TYPE&& value);
3950 Variant11& operator=(
const Variant11& rhs);
3970template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
3971 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
3972class Variant12 :
public VariantImp<typename bslmf::TypeList12<
3973 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::ListType> {
3977 A7, A8, A9, A10, A11,
3978 A12>::ListType> Imp;
3981 typedef Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
3984 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
3991 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
3994 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
3997 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4020 template <
class TYPE_OR_ALLOCATOR>
4022 Variant12(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4029 template <
class TYPE>
4032 template <
class TYPE>
4034#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4035 Variant12(TYPE&& value,
4040 typename bsl::remove_reference<TYPE>::type>::type>::value
4057 template <
class TYPE>
4058#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4059 Variant12(TYPE&& value,
4064 typename bsl::remove_reference<TYPE>::type>::type>::value,
4084 Variant12(
const Variant12& original,
bslma::Allocator *basicAllocator = 0);
4109 template <
class TYPE>
4110 Variant12& operator=(
const TYPE& value);
4112 template <
class TYPE>
4113#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4118 operator=(TYPE&& value);
4138 Variant12& operator=(
const Variant12& rhs);
4158template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4159 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
4161class Variant13 :
public VariantImp<typename bslmf::TypeList13<
4162 A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::ListType> {
4166 A7, A8, A9, A10, A11, A12,
4167 A13>::ListType> Imp;
4170 typedef Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9,
4171 A10, A11, A12, A13> SelfType;
4173 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
4180 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4183 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4186 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4209 template <
class TYPE_OR_ALLOCATOR>
4211 Variant13(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4218 template <
class TYPE>
4221 template <
class TYPE>
4223#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4224 Variant13(TYPE&& value,
4229 typename bsl::remove_reference<TYPE>::type>::type>::value
4246 template <
class TYPE>
4247#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4248 Variant13(TYPE&& value,
4253 typename bsl::remove_reference<TYPE>::type>::type>::value,
4273 Variant13(
const Variant13& original,
bslma::Allocator *basicAllocator = 0);
4298 template <
class TYPE>
4299 Variant13& operator=(
const TYPE& value);
4301 template <
class TYPE>
4302#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4307 operator=(TYPE&& value);
4327 Variant13& operator=(
const Variant13& rhs);
4347template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4348 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
4349 class A13,
class A14>
4350class Variant14 :
public VariantImp<typename bslmf::TypeList14<
4352 A6, A7, A8, A9, A10,
4353 A11, A12, A13, A14>::ListType> {
4357 A7, A8, A9, A10, A11, A12,
4359 A14>::ListType> Imp;
4362 typedef Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9,
4363 A10, A11, A12, A13, A14> SelfType;
4365 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
4372 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4375 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4378 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4401 template <
class TYPE_OR_ALLOCATOR>
4403 Variant14(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4410 template <
class TYPE>
4413 template <
class TYPE>
4415#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4416 Variant14(TYPE&& value,
4421 typename bsl::remove_reference<TYPE>::type>::type>::value
4438 template <
class TYPE>
4439#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4440 Variant14(TYPE&& value,
4445 typename bsl::remove_reference<TYPE>::type>::type>::value,
4465 Variant14(
const Variant14& original,
bslma::Allocator *basicAllocator = 0);
4490 template <
class TYPE>
4491 Variant14& operator=(
const TYPE& value);
4493 template <
class TYPE>
4494#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4499 operator=(TYPE&& value);
4519 Variant14& operator=(
const Variant14& rhs);
4539template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4540 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
4541 class A13,
class A14,
class A15>
4542class Variant15 :
public VariantImp<typename bslmf::TypeList15<
4544 A6, A7, A8, A9, A10,
4545 A11, A12, A13, A14, A15>::ListType> {
4549 A7, A8, A9, A10, A11, A12,
4551 A15>::ListType> Imp;
4554 typedef Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9,
4555 A10, A11, A12, A13, A14, A15> SelfType;
4557 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
4564 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4567 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4570 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4593 template <
class TYPE_OR_ALLOCATOR>
4595 Variant15(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4602 template <
class TYPE>
4605 template <
class TYPE>
4607#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4608 Variant15(TYPE&& value,
4613 typename bsl::remove_reference<TYPE>::type>::type>::value
4630 template <
class TYPE>
4631#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4632 Variant15(TYPE&& value,
4637 typename bsl::remove_reference<TYPE>::type>::type>::value,
4657 Variant15(
const Variant15& original,
bslma::Allocator *basicAllocator = 0);
4682 template <
class TYPE>
4683 Variant15& operator=(
const TYPE& value);
4685 template <
class TYPE>
4686#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4691 operator=(TYPE&& value);
4711 Variant15& operator=(
const Variant15& rhs);
4731template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4732 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
4733 class A13,
class A14,
class A15,
class A16>
4734class Variant16 :
public VariantImp<typename bslmf::TypeList16<
4736 A6, A7, A8, A9, A10,
4737 A11, A12, A13, A14, A15,
4742 A7, A8, A9, A10, A11, A12,
4744 A16>::ListType> Imp;
4747 typedef Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9,
4748 A10, A11, A12, A13, A14, A15, A16> SelfType;
4750 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
4757 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4760 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4763 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4786 template <
class TYPE_OR_ALLOCATOR>
4788 Variant16(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4795 template <
class TYPE>
4798 template <
class TYPE>
4800#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4801 Variant16(TYPE&& value,
4806 typename bsl::remove_reference<TYPE>::type>::type>::value
4823 template <
class TYPE>
4824#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4825 Variant16(TYPE&& value,
4830 typename bsl::remove_reference<TYPE>::type>::type>::value,
4850 Variant16(
const Variant16& original,
bslma::Allocator *basicAllocator = 0);
4875 template <
class TYPE>
4876 Variant16& operator=(
const TYPE& value);
4878 template <
class TYPE>
4879#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4884 operator=(TYPE&& value);
4904 Variant16& operator=(
const Variant16& rhs);
4924template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
4925 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
4926 class A13,
class A14,
class A15,
class A16,
class A17>
4927class Variant17 :
public VariantImp<typename bslmf::TypeList17<
4929 A6, A7, A8, A9, A10,
4930 A11, A12, A13, A14, A15,
4931 A16, A17>::ListType> {
4935 A7, A8, A9, A10, A11, A12,
4937 A17>::ListType> Imp;
4940 typedef Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9,
4941 A10, A11, A12, A13, A14, A15, A16, A17> SelfType;
4943 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
4950 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
4953 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
4956 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
4979 template <
class TYPE_OR_ALLOCATOR>
4981 Variant17(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
4988 template <
class TYPE>
4991 template <
class TYPE>
4993#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
4994 Variant17(TYPE&& value,
4999 typename bsl::remove_reference<TYPE>::type>::type>::value
5016 template <
class TYPE>
5017#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5018 Variant17(TYPE&& value,
5023 typename bsl::remove_reference<TYPE>::type>::type>::value,
5043 Variant17(
const Variant17& original,
bslma::Allocator *basicAllocator = 0);
5068 template <
class TYPE>
5069 Variant17& operator=(
const TYPE& value);
5071 template <
class TYPE>
5072#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5077 operator=(TYPE&& value);
5097 Variant17& operator=(
const Variant17& rhs);
5117template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
5118 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
5119 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
5120class Variant18 :
public VariantImp<typename bslmf::TypeList18<
5122 A6, A7, A8, A9, A10,
5123 A11, A12, A13, A14, A15,
5124 A16, A17, A18>::ListType> {
5128 A7, A8, A9, A10, A11, A12,
5129 A13, A14, A15, A16, A17,
5130 A18>::ListType> Imp;
5133 typedef Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9,
5134 A10, A11, A12, A13, A14, A15, A16, A17, A18> SelfType;
5136 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
5143 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
5146 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
5149 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
5172 template <
class TYPE_OR_ALLOCATOR>
5174 Variant18(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
5181 template <
class TYPE>
5184 template <
class TYPE>
5186#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5187 Variant18(TYPE&& value,
5192 typename bsl::remove_reference<TYPE>::type>::type>::value
5209 template <
class TYPE>
5210#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5211 Variant18(TYPE&& value,
5216 typename bsl::remove_reference<TYPE>::type>::type>::value,
5236 Variant18(
const Variant18& original,
bslma::Allocator *basicAllocator = 0);
5261 template <
class TYPE>
5262 Variant18& operator=(
const TYPE& value);
5264 template <
class TYPE>
5265#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5270 operator=(TYPE&& value);
5290 Variant18& operator=(
const Variant18& rhs);
5310template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
5311 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
5312 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
5314class Variant19 :
public VariantImp<typename bslmf::TypeList19<
5316 A6, A7, A8, A9, A10,
5317 A11, A12, A13, A14, A15,
5318 A16, A17, A18, A19>::ListType> {
5322 A7, A8, A9, A10, A11, A12,
5323 A13, A14, A15, A16, A17, A18,
5324 A19>::ListType> Imp;
5327 typedef Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9,
5328 A10, A11, A12, A13, A14, A15, A16, A17, A18,
5331 typedef VariantImp_Traits<typename Imp::TypeList> Traits;
5338 Traits::k_VARIANT_USES_BSLMA_ALLOCATOR);
5341 Traits::k_VARIANT_IS_BITWISE_COPYABLE);
5344 Traits::k_VARIANT_IS_BITWISE_MOVEABLE);
5367 template <
class TYPE_OR_ALLOCATOR>
5369 Variant19(
const TYPE_OR_ALLOCATOR& valueOrAllocator);
5376 template <
class TYPE>
5379 template <
class TYPE>
5381#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5382 Variant19(TYPE&& value,
5387 typename bsl::remove_reference<TYPE>::type>::type>::value
5404 template <
class TYPE>
5405#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5406 Variant19(TYPE&& value,
5411 typename bsl::remove_reference<TYPE>::type>::type>::value,
5431 Variant19(
const Variant19& original,
bslma::Allocator *basicAllocator = 0);
5456 template <
class TYPE>
5457 Variant19& operator=(
const TYPE& value);
5459 template <
class TYPE>
5460#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
5465 operator=(TYPE&& value);
5485 Variant19& operator=(
const Variant19& rhs);
5506template <
class TYPES,
class TYPE>
5507struct Variant_TypeIndex {
5577#if defined(BDLB_VARIANT_USING_VARIADIC_TEMPLATES)
5602struct Variant_DefaultConstructVisitor {
5610 : d_allocator_p(allocator)
5615 template <
class TYPE>
5616 void operator()(TYPE& value)
const
5630struct Variant_CopyConstructVisitor {
5638 : d_buffer_p(buffer)
5639 , d_allocator_p(allocator)
5645 template <
class TYPE>
5646 void operator()(
const TYPE& value)
const
5649 reinterpret_cast<TYPE *
>(d_buffer_p),
5663struct Variant_MoveConstructVisitor {
5671 : d_buffer_p(buffer)
5672 , d_allocator_p(allocator)
5678 template <
class TYPE>
5679 void operator()(TYPE& value)
const
5682 reinterpret_cast<TYPE *
>(d_buffer_p),
5694struct Variant_DestructorVisitor {
5697 template <
class TYPE>
5698 void operator()(TYPE&
object)
const
5700 bslma::DestructionUtil::destroy(&
object);
5712struct Variant_CopyAssignVisitor {
5719 Variant_CopyAssignVisitor(
void *buffer)
5720 : d_buffer_p(buffer)
5726 template <
class TYPE>
5727 void operator()(
const TYPE& value)
5729 *
reinterpret_cast<TYPE *
>(d_buffer_p) = value;
5741struct Variant_MoveAssignVisitor {
5748 Variant_MoveAssignVisitor(
void *buffer)
5749 : d_buffer_p(buffer)
5755 template <
class TYPE>
5756 void operator()(TYPE& value)
5758 *
reinterpret_cast<TYPE *
>(d_buffer_p) =
5771struct Variant_SwapVisitor {
5778 Variant_SwapVisitor(
void *buffer)
5779 : d_buffer_p(buffer)
5785 template <
class TYPE>
5786 void operator()(TYPE& value)
5792#ifndef BDE_OMIT_INTERNAL_DEPRECATED
5803template <
class STREAM>
5804struct Variant_BdexStreamInVisitor {
5811 Variant_BdexStreamInVisitor(STREAM& stream,
int version)
5813 , d_version(version)
5818 template <
class VALUETYPE>
5820 void operator()(VALUETYPE&
object)
const
5841template <
class STREAM>
5842struct Variant_BdexStreamOutVisitor {
5849 Variant_BdexStreamOutVisitor(STREAM& stream,
int version)
5851 , d_version(version)
5856 template <
class VALUETYPE>
5858 void operator()(
const VALUETYPE&
object)
const
5879struct Variant_PrintVisitor {
5882 bsl::ostream *d_stream_p;
5884 int d_spacesPerLevel;
5887 Variant_PrintVisitor(bsl::ostream *stream,
5890 : d_stream_p(stream)
5892 , d_spacesPerLevel(spacesPerLevel)
5898 template <
class TYPE>
5899 void operator()(
const TYPE& value)
const
5901 PrintMethods::print(*d_stream_p, value, d_level, d_spacesPerLevel);
5919struct Variant_EqualityTestVisitor {
5922 mutable bool d_result;
5923 const void *d_buffer_p;
5927 Variant_EqualityTestVisitor(
const void *buffer)
5929 , d_buffer_p(buffer)
5935 template <
class TYPE>
5936 void operator()(
const TYPE& value)
const
5938 d_result = *
reinterpret_cast<const TYPE *
>(d_buffer_p) == value;
5956template <
class TYPES>
5961, d_allocator_p(
bslma::Default::allocator(basicAllocator))
5965template <
class TYPES>
5967VariantImp_AllocatorBase<TYPES>::
5970, d_allocator_p(
bslma::Default::allocator(basicAllocator))
5974template <
class TYPES>
5975template <
class TYPE>
5977VariantImp_AllocatorBase<TYPES>::
5980, d_allocator_p(
bslma::Default::allocator(0))
5985template <
class TYPES>
5988VariantImp_AllocatorBase<TYPES>::getAllocator()
const
5990 return d_allocator_p;
5998template <
class TYPES>
6000VariantImp_NoAllocatorBase<TYPES>::
6006template <
class TYPES>
6008VariantImp_NoAllocatorBase<TYPES>::
6014template <
class TYPES>
6015template <
class TYPE>
6017VariantImp_NoAllocatorBase<TYPES>::
6024template <
class TYPES>
6027VariantImp_NoAllocatorBase<TYPES>::getAllocator()
const
6037template <
class RESULT_TYPE,
class VISITOR>
6039Variant_RawVisitorHelper<RESULT_TYPE, VISITOR>::
6040Variant_RawVisitorHelper(VISITOR *visitor)
6047template <
class RESULT_TYPE,
class VISITOR>
6048template <
class ARGUMENT_TYPE>
6051Variant_RawVisitorHelper<RESULT_TYPE, VISITOR>::operator()(
6052 ARGUMENT_TYPE& argument)
6054 return static_cast<RESULT_TYPE
>((*d_visitor)(argument));
6057template <
class RESULT_TYPE,
class VISITOR>
6058template <
class ARGUMENT_TYPE>
6061Variant_RawVisitorHelper<RESULT_TYPE, VISITOR>::operator()(
6062 const ARGUMENT_TYPE& argument)
6064 return static_cast<RESULT_TYPE
>((*d_visitor)(argument));
6068template <
class RESULT_TYPE,
class VISITOR>
6069template <
class ARGUMENT_TYPE>
6072Variant_RawVisitorHelper<RESULT_TYPE, VISITOR>::operator()(
6073 ARGUMENT_TYPE& argument)
const
6075 return static_cast<RESULT_TYPE
>((*d_visitor)(argument));
6078template <
class RESULT_TYPE,
class VISITOR>
6079template <
class ARGUMENT_TYPE>
6082Variant_RawVisitorHelper<RESULT_TYPE, VISITOR>::operator()(
6083 const ARGUMENT_TYPE& argument)
const
6085 return static_cast<RESULT_TYPE
>((*d_visitor)(argument));
6088template <
class RESULT_TYPE,
class VISITOR>
6090Variant_RawVisitorHelper<RESULT_TYPE, VISITOR>::operator()(
bslmf::Nil)
const
6100template <
class TYPES>
6101template <
class TYPE,
class VISITOR_REF>
6107 visitor(
reinterpret_cast<BufferType *
>(&this->d_value)->
object());
6110template <
class TYPES>
6111template <
class TYPE,
class VISITOR_REF>
6113void VariantImp<TYPES>::applyImp(VISITOR_REF visitor,
bsl::true_type)
6119template <
class TYPES>
6120template <
class TYPE,
class VISITOR_REF>
6122void VariantImp<TYPES>::applyImp(VISITOR_REF visitor)
6125 applyImp<TYPE, VISITOR_REF>(visitor, IsUnset());
6128template <
class TYPES>
6129template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6131RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor,
bsl::false_type)
6135 return visitor(
reinterpret_cast<BufferType *
>(&this->d_value)->
object());
6138template <
class TYPES>
6139template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6141RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor,
bsl::true_type)
6144 return visitor(nil);
6147template <
class TYPES>
6148template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6150RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor)
6153 return applyImpR<TYPE, VISITOR_REF, RET_TYPE>(visitor, IsUnset());
6156template <
class TYPES>
6157template <
class TYPE,
class SOURCE_TYPE>
6158void VariantImp<TYPES>::assignImp(
const SOURCE_TYPE& value)
6164 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6165 this->getAllocator(),
6167 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
6170template <
class TYPES>
6171template <
class TYPE>
6172#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6173void VariantImp<TYPES>::assignImp(TYPE&& value)
6183#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6185 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6186 this->getAllocator(),
6189 TYPE& lvalue = value;
6191 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6192 this->getAllocator(),
6197 Variant_TypeIndex<TYPES,
6198 typename bsl::remove_reference<TYPE>::type>::value;
6201template <
class TYPES>
6202template <
class VISITOR_REF>
6203void VariantImp<TYPES>::doApply(VISITOR_REF visitor,
int type)
6207 BSLS_ASSERT(0 ==
"'doApply' invoked on an unset variant");
6210 applyImp<typename Base::Type1, VISITOR_REF>(visitor);
6213 applyImp<typename Base::Type2, VISITOR_REF>(visitor);
6216 applyImp<typename Base::Type3, VISITOR_REF>(visitor);
6219 applyImp<typename Base::Type4, VISITOR_REF>(visitor);
6222 applyImp<typename Base::Type5, VISITOR_REF>(visitor);
6225 applyImp<typename Base::Type6, VISITOR_REF>(visitor);
6228 applyImp<typename Base::Type7, VISITOR_REF>(visitor);
6231 applyImp<typename Base::Type8, VISITOR_REF>(visitor);
6234 applyImp<typename Base::Type9, VISITOR_REF>(visitor);
6237 applyImp<typename Base::Type10, VISITOR_REF>(visitor);
6240 applyImp<typename Base::Type11, VISITOR_REF>(visitor);
6243 applyImp<typename Base::Type12, VISITOR_REF>(visitor);
6246 applyImp<typename Base::Type13, VISITOR_REF>(visitor);
6249 applyImp<typename Base::Type14, VISITOR_REF>(visitor);
6252 applyImp<typename Base::Type15, VISITOR_REF>(visitor);
6255 applyImp<typename Base::Type16, VISITOR_REF>(visitor);
6258 applyImp<typename Base::Type17, VISITOR_REF>(visitor);
6261 applyImp<typename Base::Type18, VISITOR_REF>(visitor);
6264 applyImp<typename Base::Type19, VISITOR_REF>(visitor);
6267 applyImp<typename Base::Type20, VISITOR_REF>(visitor);
6275template <
class TYPES>
6276template <
class TYPE>
6283 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6284 this->getAllocator(),
6288template <
class TYPES>
6294template <
class TYPES>
6295template <
class VISITOR_REF,
class RET_TYPE>
6296RET_TYPE VariantImp<TYPES>::doApplyR(VISITOR_REF visitor,
int type)
6303 return applyImpR<
typename Base::Type1,
6308 return applyImpR<
typename Base::Type2,
6313 return applyImpR<
typename Base::Type3,
6318 return applyImpR<
typename Base::Type4,
6323 return applyImpR<
typename Base::Type5,
6328 return applyImpR<
typename Base::Type6,
6333 return applyImpR<
typename Base::Type7,
6338 return applyImpR<
typename Base::Type8,
6343 return applyImpR<
typename Base::Type9,
6348 return applyImpR<
typename Base::Type10,
6353 return applyImpR<
typename Base::Type11,
6358 return applyImpR<
typename Base::Type12,
6363 return applyImpR<
typename Base::Type13,
6368 return applyImpR<
typename Base::Type14,
6373 return applyImpR<
typename Base::Type15,
6378 return applyImpR<
typename Base::Type16,
6383 return applyImpR<
typename Base::Type17,
6388 return applyImpR<
typename Base::Type18,
6393 return applyImpR<
typename Base::Type19,
6398 return applyImpR<
typename Base::Type20,
6409template <
class TYPES>
6410template <
class TYPE,
class VISITOR_REF>
6412void VariantImp<TYPES>::applyImp(VISITOR_REF visitor,
bsl::false_type)
const
6416 visitor(
reinterpret_cast<const BufferType *
>(&this->d_value)->
object());
6419template <
class TYPES>
6420template <
class TYPE,
class VISITOR_REF>
6422void VariantImp<TYPES>::applyImp(VISITOR_REF visitor,
bsl::true_type)
const
6428template <
class TYPES>
6429template <
class TYPE,
class VISITOR_REF>
6431void VariantImp<TYPES>::applyImp(VISITOR_REF visitor)
const
6434 applyImp<TYPE, VISITOR_REF>(visitor, IsUnset());
6437template <
class TYPES>
6438template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6440RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor,
6445 return visitor(
reinterpret_cast<const BufferType *
>(
6446 &this->d_value)->
object());
6449template <
class TYPES>
6450template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6452RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor,
6456 return visitor(nil);
6459template <
class TYPES>
6460template <
class TYPE,
class VISITOR_REF,
class RET_TYPE>
6462RET_TYPE VariantImp<TYPES>::applyImpR(VISITOR_REF visitor)
const
6465 return applyImpR<TYPE, VISITOR_REF, RET_TYPE>(visitor, IsUnset());
6468template <
class TYPES>
6469template <
class VISITOR_REF>
6470void VariantImp<TYPES>::doApply(VISITOR_REF visitor,
int type)
const
6477 applyImp<typename Base::Type1, VISITOR_REF>(visitor);
6480 applyImp<typename Base::Type2, VISITOR_REF>(visitor);
6483 applyImp<typename Base::Type3, VISITOR_REF>(visitor);
6486 applyImp<typename Base::Type4, VISITOR_REF>(visitor);
6489 applyImp<typename Base::Type5, VISITOR_REF>(visitor);
6492 applyImp<typename Base::Type6, VISITOR_REF>(visitor);
6495 applyImp<typename Base::Type7, VISITOR_REF>(visitor);
6498 applyImp<typename Base::Type8, VISITOR_REF>(visitor);
6501 applyImp<typename Base::Type9, VISITOR_REF>(visitor);
6504 applyImp<typename Base::Type10, VISITOR_REF>(visitor);
6507 applyImp<typename Base::Type11, VISITOR_REF>(visitor);
6510 applyImp<typename Base::Type12, VISITOR_REF>(visitor);
6513 applyImp<typename Base::Type13, VISITOR_REF>(visitor);
6516 applyImp<typename Base::Type14, VISITOR_REF>(visitor);
6519 applyImp<typename Base::Type15, VISITOR_REF>(visitor);
6522 applyImp<typename Base::Type16, VISITOR_REF>(visitor);
6525 applyImp<typename Base::Type17, VISITOR_REF>(visitor);
6528 applyImp<typename Base::Type18, VISITOR_REF>(visitor);
6531 applyImp<typename Base::Type19, VISITOR_REF>(visitor);
6534 applyImp<typename Base::Type20, VISITOR_REF>(visitor);
6542template <
class TYPES>
6543template <
class VISITOR_REF,
class RET_TYPE>
6544RET_TYPE VariantImp<TYPES>::doApplyR(VISITOR_REF visitor,
int type)
const
6551 return applyImpR<
typename Base::Type1,
6556 return applyImpR<
typename Base::Type2,
6561 return applyImpR<
typename Base::Type3,
6566 return applyImpR<
typename Base::Type4,
6571 return applyImpR<
typename Base::Type5,
6576 return applyImpR<
typename Base::Type6,
6581 return applyImpR<
typename Base::Type7,
6586 return applyImpR<
typename Base::Type8,
6591 return applyImpR<
typename Base::Type9,
6596 return applyImpR<
typename Base::Type10,
6601 return applyImpR<
typename Base::Type11,
6606 return applyImpR<
typename Base::Type12,
6611 return applyImpR<
typename Base::Type13,
6616 return applyImpR<
typename Base::Type14,
6621 return applyImpR<
typename Base::Type15,
6626 return applyImpR<
typename Base::Type16,
6631 return applyImpR<
typename Base::Type17,
6636 return applyImpR<
typename Base::Type18,
6641 return applyImpR<
typename Base::Type19,
6646 return applyImpR<
typename Base::Type20,
6657template <
class TYPES>
6659VariantImp<TYPES>::VariantImp()
6664template <
class TYPES>
6665template <
class TYPE_OR_ALLOCATOR>
6667VariantImp<TYPES>::VariantImp(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
6668: Base(Variant_TypeIndex<TYPES, TYPE_OR_ALLOCATOR>::value,
6670 bsl::integral_constant<bool,
bsl::is_convertible<TYPE_OR_ALLOCATOR,
6671 bslma::Allocator *>::value>())
6681template <
class TYPES>
6682template <
class TYPE>
6684VariantImp<TYPES>::VariantImp(
const TYPE& value,
6686: Base(Variant_TypeIndex<TYPES, TYPE>::value, basicAllocator)
6691 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6692 this->getAllocator(),
6696template <
class TYPES>
6697template <
class TYPE>
6699#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6700VariantImp(TYPE&& value,
6705 typename bsl::remove_reference<TYPE>::type>::type>::value
6712: Base(Variant_TypeIndex<
6715 typename bsl::remove_reference<TYPE>::type>::type>::value,
6720 typename bsl::remove_reference<TYPE>::type>::type> BufferType;
6722#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6724 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6725 this->getAllocator(),
6728 TYPE& lvalue = value;
6730 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6731 this->getAllocator(),
6736template <
class TYPES>
6737template <
class TYPE>
6739#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6740VariantImp(TYPE&& value,
6745 typename bsl::remove_reference<TYPE>::type>::type>::value,
6751: Base(Variant_TypeIndex<
6754 typename bsl::remove_reference<TYPE>::type>::type>::value,
6759 typename bsl::remove_reference<TYPE>::type>::type> BufferType;
6761#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6763 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6764 this->getAllocator(),
6767 TYPE& lvalue = value;
6769 reinterpret_cast<BufferType *
>(&this->d_value)->address(),
6770 this->getAllocator(),
6775template <
class TYPES>
6776VariantImp<TYPES>::VariantImp(
const VariantImp& original,
6778: Base(original.d_type, basicAllocator)
6781 Variant_CopyConstructVisitor copyConstructor(&this->d_value,
6782 this->getAllocator());
6783 original.apply(copyConstructor);
6787template <
class TYPES>
6789: Base(MoveUtil::access(original).d_type,
6790 MoveUtil::access(original).getAllocator())
6793 Variant_MoveConstructVisitor moveConstructor(&this->d_value,
6794 this->getAllocator());
6795 VariantImp& lvalue = original;
6797 lvalue.apply(moveConstructor);
6801template <
class TYPES>
6804: Base(MoveUtil::access(original).d_type, basicAllocator)
6807 Variant_MoveConstructVisitor moveConstructor(&this->d_value,
6808 this->getAllocator());
6809 VariantImp& lvalue = original;
6811 lvalue.apply(moveConstructor);
6815template <
class TYPES>
6817VariantImp<TYPES>::~VariantImp()
6823template <
class TYPES>
6824template <
class TYPE>
6827VariantImp<TYPES>::operator=(
const TYPE& value)
6832template <
class TYPES>
6833template <
class TYPE>
6835#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6839VariantImp<TYPES> >::type&
6840VariantImp<TYPES>::operator=(TYPE&& value)
6846#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
6849 TYPE& lvalue = value;
6850 return assign(MoveUtil::move(lvalue));
6854template <
class TYPES>
6856VariantImp<TYPES>::operator=(
const VariantImp& rhs)
6859 if (this->d_type == rhs.d_type) {
6861 Variant_CopyAssignVisitor assigner(&this->d_value);
6862 rhs.apply(assigner);
6868 Variant_CopyConstructVisitor copyConstructor(
6870 this->getAllocator());
6871 rhs.apply(copyConstructor);
6872 this->d_type = rhs.d_type;
6880template <
class TYPES>
6884 VariantImp& lvalue = rhs;
6886 if (&lvalue !=
this) {
6887 if (this->d_type == lvalue.d_type) {
6889 Variant_MoveAssignVisitor assigner(&this->d_value);
6890 lvalue.apply(assigner);
6895 if (lvalue.d_type) {
6896 Variant_MoveConstructVisitor moveConstructor(
6898 this->getAllocator());
6899 lvalue.apply(moveConstructor);
6900 this->d_type = lvalue.d_type;
6908template <
class TYPES>
6909template <
class RET_TYPE,
class VISITOR>
6911RET_TYPE VariantImp<TYPES>::apply(VISITOR& visitor)
6914 return doApplyR<VISITOR&, RET_TYPE>(visitor, this->d_type);
6918 return visitor(nil);
6921template <
class TYPES>
6922template <
class RET_TYPE,
class VISITOR>
6924RET_TYPE VariantImp<TYPES>::apply(
const VISITOR& visitor)
6927 return doApplyR<const VISITOR&, RET_TYPE>(visitor, this->d_type);
6932 return visitor(nil);
6935template <
class TYPES>
6936template <
class RET_TYPE,
class VISITOR,
class TYPE>
6938RET_TYPE VariantImp<TYPES>::apply(VISITOR& visitor,
const TYPE& defaultValue)
6941 return doApplyR<VISITOR&, RET_TYPE>(visitor, this->d_type);
6944 return visitor(defaultValue);
6947template <
class TYPES>
6948template <
class RET_TYPE,
class VISITOR,
class TYPE>
6950RET_TYPE VariantImp<TYPES>::apply(
const VISITOR& visitor,
6951 const TYPE& defaultValue)
6954 return doApplyR<const VISITOR&, RET_TYPE>(visitor, this->d_type);
6958 return visitor(defaultValue);
6961template <
class TYPES>
6962template <
class RET_TYPE,
class VISITOR>
6964RET_TYPE VariantImp<TYPES>::applyRaw(VISITOR& visitor)
6966 typedef Variant_RawVisitorHelper<RET_TYPE, VISITOR> Helper;
6968 return doApplyR<const Helper&, RET_TYPE>(Helper(&visitor), this->d_type);
6971template <
class TYPES>
6972template <
class RET_TYPE,
class VISITOR>
6974RET_TYPE VariantImp<TYPES>::applyRaw(
const VISITOR& visitor)
6976 typedef Variant_RawVisitorHelper<RET_TYPE, const VISITOR> Helper;
6978 return doApplyR<const Helper&, RET_TYPE>(Helper(&visitor), this->d_type);
6981template <
class TYPES>
6982template <
class TYPE>
6983VariantImp<TYPES>& VariantImp<TYPES>::assign(
const TYPE& value)
6987 if (Variant_TypeIndex<TYPES, TYPE>::value == this->d_type) {
6988 reinterpret_cast<BufferType *
>(&this->d_value)->
object() = value;
6991 assignImp<TYPE, TYPE>(value);
6997template <
class TYPES>
6998template <
class TYPE>
6999#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7000VariantImp<TYPES>& VariantImp<TYPES>::assign(TYPE&& value)
7008#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7009 if (Variant_TypeIndex<TYPES,
7010 typename bsl::remove_reference<TYPE>::type>::value
7012 reinterpret_cast<BufferType *
>(&this->d_value)->
object() =
7019 TYPE& lvalue = value;
7021 if (Variant_TypeIndex<TYPES, TYPE>::value == this->d_type) {
7022 reinterpret_cast<BufferType *
>(&this->d_value)->
object() =
7023 MoveUtil::move(lvalue);
7026 assignImp<TYPE>(MoveUtil::move(lvalue));
7033template <
class TYPES>
7034template <
class TYPE,
class SOURCE_TYPE>
7035VariantImp<TYPES>& VariantImp<TYPES>::assignTo(
const SOURCE_TYPE& value)
7039 if (Variant_TypeIndex<TYPES, TYPE>::value == this->d_type
7041 reinterpret_cast<BufferType *
>(&this->d_value)->
object() = value;
7044 assignImp<TYPE, SOURCE_TYPE>(value);
7050#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
7053#ifndef BDLB_VARIANT_VARIADIC_LIMIT
7054#define BDLB_VARIANT_VARIADIC_LIMIT 14
7056#ifndef BDLB_VARIANT_VARIADIC_LIMIT_B
7057#define BDLB_VARIANT_VARIADIC_LIMIT_B BDLB_VARIANT_VARIADIC_LIMIT
7060#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 0
7061template <
class TYPES>
7062template <
class TYPE>
7064TYPE& VariantImp<TYPES>::createInPlace(
7068 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7073 this->getAllocator());
7074 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7076 return bufR.object();
7080#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 1
7081template <
class TYPES>
7082template <
class TYPE,
class ARGS_01>
7084TYPE& VariantImp<TYPES>::createInPlace(
7088 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7093 this->getAllocator(),
7095 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7097 return bufR.object();
7101#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 2
7102template <
class TYPES>
7103template <
class TYPE,
class ARGS_01,
7106TYPE& VariantImp<TYPES>::createInPlace(
7111 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7116 this->getAllocator(),
7119 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7121 return bufR.object();
7125#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 3
7126template <
class TYPES>
7127template <
class TYPE,
class ARGS_01,
7131TYPE& VariantImp<TYPES>::createInPlace(
7137 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7142 this->getAllocator(),
7146 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7148 return bufR.object();
7152#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 4
7153template <
class TYPES>
7154template <
class TYPE,
class ARGS_01,
7159TYPE& VariantImp<TYPES>::createInPlace(
7166 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7171 this->getAllocator(),
7176 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7178 return bufR.object();
7182#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 5
7183template <
class TYPES>
7184template <
class TYPE,
class ARGS_01,
7190TYPE& VariantImp<TYPES>::createInPlace(
7198 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7203 this->getAllocator(),
7209 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7211 return bufR.object();
7215#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 6
7216template <
class TYPES>
7217template <
class TYPE,
class ARGS_01,
7224TYPE& VariantImp<TYPES>::createInPlace(
7233 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7238 this->getAllocator(),
7245 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7247 return bufR.object();
7251#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 7
7252template <
class TYPES>
7253template <
class TYPE,
class ARGS_01,
7261TYPE& VariantImp<TYPES>::createInPlace(
7271 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7276 this->getAllocator(),
7284 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7286 return bufR.object();
7290#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 8
7291template <
class TYPES>
7292template <
class TYPE,
class ARGS_01,
7301TYPE& VariantImp<TYPES>::createInPlace(
7312 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7317 this->getAllocator(),
7326 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7328 return bufR.object();
7332#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 9
7333template <
class TYPES>
7334template <
class TYPE,
class ARGS_01,
7344TYPE& VariantImp<TYPES>::createInPlace(
7356 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7361 this->getAllocator(),
7371 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7373 return bufR.object();
7377#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 10
7378template <
class TYPES>
7379template <
class TYPE,
class ARGS_01,
7390TYPE& VariantImp<TYPES>::createInPlace(
7403 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7408 this->getAllocator(),
7419 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7421 return bufR.object();
7425#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 11
7426template <
class TYPES>
7427template <
class TYPE,
class ARGS_01,
7439TYPE& VariantImp<TYPES>::createInPlace(
7453 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7458 this->getAllocator(),
7470 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7472 return bufR.object();
7476#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 12
7477template <
class TYPES>
7478template <
class TYPE,
class ARGS_01,
7491TYPE& VariantImp<TYPES>::createInPlace(
7506 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7511 this->getAllocator(),
7524 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7526 return bufR.object();
7530#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 13
7531template <
class TYPES>
7532template <
class TYPE,
class ARGS_01,
7546TYPE& VariantImp<TYPES>::createInPlace(
7562 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7567 this->getAllocator(),
7581 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7583 return bufR.object();
7587#if BDLB_VARIANT_VARIADIC_LIMIT_B >= 14
7588template <
class TYPES>
7589template <
class TYPE,
class ARGS_01,
7604TYPE& VariantImp<TYPES>::createInPlace(
7621 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7626 this->getAllocator(),
7641 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7643 return bufR.object();
7651template <
class TYPES>
7652template <
class TYPE,
class... ARGS>
7654TYPE& VariantImp<TYPES>::createInPlace(
7658 BufferType& bufR = *
reinterpret_cast<BufferType *
>(&this->d_value);
7663 this->getAllocator(),
7665 this->d_type = Variant_TypeIndex<TYPES, TYPE>::value;
7667 return bufR.object();
7673template <
class TYPES>
7674void VariantImp<TYPES>::reset()
7677 Variant_DestructorVisitor destructor;
7683template <
class TYPES>
7684void VariantImp<TYPES>::swap(VariantImp<TYPES>& other)
7686 if (!this->d_type) {
7687 if (!other.d_type) {
7693 else if (!other.d_type) {
7698 if (this->d_type == other.d_type
7699 && this->getAllocator() == other.getAllocator()) {
7703 Variant_SwapVisitor swapper(&this->d_value);
7704 other.apply(swapper);
7716template <
class TYPES>
7717template <
class TYPE>
7719TYPE& VariantImp<TYPES>::the()
7721 BSLMF_ASSERT((0 != Variant_TypeIndex<TYPES, TYPE>::value));
7726 return reinterpret_cast<BufferType *
>(&this->d_value)->
object();
7730template <
class TYPES>
7731template <
class RET_TYPE,
class VISITOR>
7733RET_TYPE VariantImp<TYPES>::apply(VISITOR& visitor)
const
7736 return doApplyR<VISITOR&, RET_TYPE>(visitor, this->d_type);
7740 return visitor(nil);
7743template <
class TYPES>
7744template <
class RET_TYPE,
class VISITOR>
7746RET_TYPE VariantImp<TYPES>::apply(
const VISITOR& visitor)
const
7749 return doApplyR<const VISITOR&, RET_TYPE>(visitor, this->d_type);
7754 return visitor(nil);
7757template <
class TYPES>
7758template <
class RET_TYPE,
class VISITOR,
class TYPE>
7760RET_TYPE VariantImp<TYPES>::apply(VISITOR& visitor,
7761 const TYPE& defaultValue)
const
7764 return doApplyR<VISITOR&, RET_TYPE>(visitor, this->d_type);
7767 return visitor(defaultValue);
7770template <
class TYPES>
7771template <
class RET_TYPE,
class VISITOR,
class TYPE>
7773RET_TYPE VariantImp<TYPES>::apply(
const VISITOR& visitor,
7774 const TYPE& defaultValue)
const
7777 return doApplyR<const VISITOR&, RET_TYPE>(visitor, this->d_type);
7781 return visitor(defaultValue);
7784template <
class TYPES>
7785template <
class RET_TYPE,
class VISITOR>
7787RET_TYPE VariantImp<TYPES>::applyRaw(VISITOR& visitor)
const
7789 typedef Variant_RawVisitorHelper<RET_TYPE, VISITOR> Helper;
7791 return doApplyR<const Helper&, RET_TYPE>(Helper(&visitor), this->d_type);
7794template <
class TYPES>
7795template <
class RET_TYPE,
class VISITOR>
7797RET_TYPE VariantImp<TYPES>::applyRaw(
const VISITOR& visitor)
const
7799 typedef Variant_RawVisitorHelper<RET_TYPE, const VISITOR> Helper;
7801 return doApplyR<const Helper&, RET_TYPE>(Helper(&visitor), this->d_type);
7804template <
class TYPES>
7805template <
class TYPE>
7807bool VariantImp<TYPES>::is()
const
7809 return Variant_TypeIndex<TYPES, TYPE>::value == this->d_type;
7812template <
class TYPES>
7814bool VariantImp<TYPES>::isUnset()
const
7816 return !this->d_type;
7819template <
class TYPES>
7821VariantImp<TYPES>::print(bsl::ostream& stream,
7823 int spacesPerLevel)
const
7826 Variant_PrintVisitor visitor(&stream, level, spacesPerLevel);
7828 doApply<const Variant_PrintVisitor&>(visitor, this->d_type);
7833template <
class TYPES>
7834template <
class TYPE>
7836const TYPE& VariantImp<TYPES>::the()
const
7838 BSLMF_ASSERT((0 != Variant_TypeIndex<TYPES, TYPE>::value));
7843 return reinterpret_cast<const BufferType *
>(&this->d_value)->
object();
7846template <
class TYPES>
7848int VariantImp<TYPES>::typeIndex()
const
7850 return this->d_type;
7853#ifndef BDE_OMIT_INTERNAL_DEPRECATED
7854template <
class TYPES>
7856const bsl::type_info& VariantImp<TYPES>::typeInfo()
const
7858 return typeid(void);
7861template <
class TYPES>
7862template <
class STREAM>
7863STREAM& VariantImp<TYPES>::bdexStreamIn(STREAM& stream,
int version)
7868 if (!stream || type < 0 || 20 < type) {
7869 stream.invalidate();
7873 if (type != this->d_type) {
7877 Variant_DefaultConstructVisitor defaultConstructor(
7878 this->getAllocator());
7879 doApply(defaultConstructor, type);
7882 this->d_type = type;
7886 Variant_BdexStreamInVisitor<STREAM> streamer(stream, version);
7887 doApply(streamer, type);
7892template <
class TYPES>
7894int VariantImp<TYPES>::maxSupportedBdexVersion()
const
7899template <
class TYPES>
7900template <
class STREAM>
7901STREAM& VariantImp<TYPES>::bdexStreamOut(STREAM& stream,
int version)
const
7906 typedef Variant_BdexStreamOutVisitor<STREAM> Streamer;
7908 Streamer streamer(stream, version);
7909 doApply<Streamer&>(streamer, this->d_type);
7919template <
class TYPES>
7921 const VariantImp<TYPES>& rhs)
7923 if (lhs.typeIndex() != rhs.typeIndex()) {
7927 if (0 == lhs.typeIndex()) {
7931 Variant_EqualityTestVisitor visitor(&rhs.d_value);
7934 return visitor.d_result;
7937template <
class TYPES>
7940 const VariantImp<TYPES>& rhs)
7942 return !(lhs == rhs);
7945template <
class TYPES>
7948 const VariantImp<TYPES>&
object)
7950 return object.print(stream, 0, -1);
7954template <
class TYPES>
7956void bdlb::swap(VariantImp<TYPES>& a, VariantImp<TYPES>& b)
7968#if defined(BDLB_VARIANT_USING_VARIADIC_TEMPLATES)
7969template <
class ...TYPES>
7975template <
class ...TYPES>
7976template <
class TYPE_OR_ALLOCATOR>
7979: Imp(valueOrAllocator)
7983template <
class ...TYPES>
7984template <
class TYPE>
7986Variant<TYPES...>::Variant(
const TYPE& value,
bslma::Allocator *basicAllocator)
7987: Imp(value, basicAllocator)
7991template <
class ...TYPES>
7992template <
class TYPE>
7995#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
7996Variant(TYPE&& value,
8001 typename bsl::remove_reference<TYPE>::type>::type>::value
8007Variant(
bslmf::MovableRef<TYPE> value)
8008: Imp(MoveUtil::move(value))
8013template <
class ...TYPES>
8014template <
class TYPE>
8017#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8018Variant(TYPE&& value,
8023 typename bsl::remove_reference<TYPE>::type>::type>::value,
8027Variant(
bslmf::MovableRef<TYPE> value,
8028 bslma::Allocator *basicAllocator)
8029: Imp(MoveUtil::move(value), basicAllocator)
8036template <
class ...TYPES>
8038Variant<TYPES...>::Variant(
const Variant& original,
8040: Imp(static_cast<const Imp&>(original), basicAllocator)
8044template <
class ...TYPES>
8047: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
8051template <
class ...TYPES>
8055: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
8061template <
class ...TYPES>
8062template <
class TYPE>
8064Variant<TYPES...>& Variant<TYPES...>::operator=(
const TYPE& value)
8066 Imp::operator=(value);
8070template <
class ...TYPES>
8071template <
class TYPE>
8073#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8077Variant<TYPES...> >::type&
8078Variant<TYPES...>::operator=(TYPE&& value)
8084#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8087 TYPE& lvalue = value;
8088 Imp::operator=(MoveUtil::move(lvalue));
8094template <
class ...TYPES>
8096Variant<TYPES...>& Variant<TYPES...>::operator=(
const Variant& rhs)
8101 Imp::operator=(
static_cast<const Imp&
>(rhs));
8105template <
class ...TYPES>
8112 Variant& lvalue = rhs;
8114 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8119template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8120 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8121 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8122 class A19,
class A20>
8124Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8125 A13, A14, A15, A16, A17, A18, A19, A20>::Variant()
8129template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8130 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8131 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8132 class A19,
class A20>
8133template <
class TYPE_OR_ALLOCATOR>
8135Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8136 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
8137 const TYPE_OR_ALLOCATOR& valueOrAllocator)
8138: Imp(valueOrAllocator)
8142template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8143 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8144 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8145 class A19,
class A20>
8146template <
class TYPE>
8148Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8149 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
8152: Imp(value, basicAllocator)
8156template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8157 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8158 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8159 class A19,
class A20>
8160template <
class TYPE>
8162Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8163 A13, A14, A15, A16, A17, A18, A19, A20>::
8164#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8165Variant(TYPE&& value,
8170 typename bsl::remove_reference<TYPE>::type>::type>::value
8176Variant(
bslmf::MovableRef<TYPE> value)
8177: Imp(MoveUtil::move(value))
8182template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8183 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8184 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8185 class A19,
class A20>
8186template <
class TYPE>
8188Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8189 A13, A14, A15, A16, A17, A18, A19, A20>::
8190#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8191Variant(TYPE&& value,
8196 typename bsl::remove_reference<TYPE>::type>::type>::value,
8200Variant(
bslmf::MovableRef<TYPE> value,
8201 bslma::Allocator *basicAllocator)
8202: Imp(MoveUtil::move(value), basicAllocator)
8207template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8208 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8209 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8210 class A19,
class A20>
8212Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8213 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
8214 const Variant& original,
8216: Imp(static_cast<const Imp&>(original), basicAllocator)
8222template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8223 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8224 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8225 class A19,
class A20>
8227Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8228 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
8230: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
8234template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8235 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8236 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8237 class A19,
class A20>
8239Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8240 A13, A14, A15, A16, A17, A18, A19, A20>::Variant(
8243: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
8249template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8250 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8251 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8252 class A19,
class A20>
8253template <
class TYPE>
8255Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8256 A13, A14, A15, A16, A17, A18, A19, A20>&
8257Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8258 A13, A14, A15, A16, A17, A18, A19, A20>::operator=(
const TYPE& value)
8260 Imp::operator=(value);
8264template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8265 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8266 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8267 class A19,
class A20>
8268template <
class TYPE>
8270#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8273 A8, A9, A10, A11, A12, A13, A14,
8274 A15, A16, A17, A18, A19, A20>,
8276Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
8277 A16, A17, A18, A19, A20> >::type&
8278Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
8279 A16, A17, A18, A19, A20>::operator=(TYPE&& value)
8281Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
8282 A16, A17, A18, A19, A20>&
8283Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
8287#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8290 TYPE& lvalue = value;
8291 Imp::operator=(MoveUtil::move(lvalue));
8297template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8298 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8299 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8300 class A19,
class A20>
8302Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8303 A13, A14, A15, A16, A17, A18, A19, A20>&
8304Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8305 A13, A14, A15, A16, A17, A18, A19, A20>::operator=(
const Variant& rhs)
8310 Imp::operator=(
static_cast<const Imp&
>(rhs));
8314template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
8315 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
8316 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
8317 class A19,
class A20>
8319Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8320 A13, A14, A15, A16, A17, A18, A19, A20>&
8321Variant<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
8322 A13, A14, A15, A16, A17, A18, A19, A20>::
8328 Variant& lvalue = rhs;
8330 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8336#ifdef BDLB_VARIANT_USING_VARIADIC_TEMPLATES
8337#undef BDLB_VARIANT_USING_VARIADIC_TEMPLATES
8345template <
class A1,
class A2>
8347Variant2<A1, A2>::Variant2()
8351template <
class A1,
class A2>
8352template <
class TYPE_OR_ALLOCATOR>
8354Variant2<A1, A2>::Variant2(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8355: Imp(valueOrAllocator)
8359template <
class A1,
class A2>
8360template <
class TYPE>
8362Variant2<A1, A2>::Variant2(
const TYPE& value,
8364: Imp(value, basicAllocator)
8368template <
class A1,
class A2>
8369template <
class TYPE>
8372#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8373Variant2(TYPE&& value,
8378 typename bsl::remove_reference<TYPE>::type>::type>::value
8384Variant2(
bslmf::MovableRef<TYPE> value)
8385: Imp(MoveUtil::move(value))
8390template <
class A1,
class A2>
8391template <
class TYPE>
8394#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8395Variant2(TYPE&& value,
8400 typename bsl::remove_reference<TYPE>::type>::type>::value,
8404Variant2(
bslmf::MovableRef<TYPE> value,
8405 bslma::Allocator *basicAllocator)
8406: Imp(MoveUtil::move(value), basicAllocator)
8411template <
class A1,
class A2>
8413Variant2<A1, A2>::Variant2(
const Variant2& original,
8415: Imp(static_cast<const Imp&>(original), basicAllocator)
8419template <
class A1,
class A2>
8422: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
8426template <
class A1,
class A2>
8430: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
8436template <
class A1,
class A2>
8437template <
class TYPE>
8440Variant2<A1, A2>::operator=(
const TYPE& value)
8442 Imp::operator=(value);
8446template <
class A1,
class A2>
8447template <
class TYPE>
8449#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8453Variant2<A1, A2> >::type&
8454Variant2<A1, A2>::operator=(TYPE&& value)
8460#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8463 TYPE& lvalue = value;
8464 Imp::operator=(MoveUtil::move(lvalue));
8470template <
class A1,
class A2>
8473Variant2<A1, A2>::operator=(
const Variant2& rhs)
8475 Imp::operator=(
static_cast<const Imp&
>(rhs));
8479template <
class A1,
class A2>
8484 Variant2& lvalue = rhs;
8486 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8495template <
class A1,
class A2,
class A3>
8497Variant3<A1, A2, A3>::Variant3()
8501template <
class A1,
class A2,
class A3>
8502template <
class TYPE_OR_ALLOCATOR>
8504Variant3<A1, A2, A3>::
8505Variant3(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8506: Imp(valueOrAllocator)
8510template <
class A1,
class A2,
class A3>
8511template <
class TYPE>
8513Variant3<A1, A2, A3>::
8515: Imp(value, basicAllocator)
8519template <
class A1,
class A2,
class A3>
8520template <
class TYPE>
8522Variant3<A1, A2, A3>::
8523#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8524Variant3(TYPE&& value,
8529 typename bsl::remove_reference<TYPE>::type>::type>::value
8535Variant3(
bslmf::MovableRef<TYPE> value)
8536: Imp(MoveUtil::move(value))
8541template <
class A1,
class A2,
class A3>
8542template <
class TYPE>
8544Variant3<A1, A2, A3>::
8545#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8546Variant3(TYPE&& value,
8551 typename bsl::remove_reference<TYPE>::type>::type>::value,
8555Variant3(
bslmf::MovableRef<TYPE> value,
8556 bslma::Allocator *basicAllocator)
8557: Imp(MoveUtil::move(value), basicAllocator)
8562template <
class A1,
class A2,
class A3>
8564Variant3<A1, A2, A3>::
8566: Imp(static_cast<const Imp&>(original), basicAllocator)
8570template <
class A1,
class A2,
class A3>
8572Variant3<A1, A2, A3>::
8574: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
8578template <
class A1,
class A2,
class A3>
8580Variant3<A1, A2, A3>::
8583: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
8589template <
class A1,
class A2,
class A3>
8590template <
class TYPE>
8592Variant3<A1, A2, A3>&
8593Variant3<A1, A2, A3>::operator=(
const TYPE& value)
8595 Imp::operator=(value);
8599template <
class A1,
class A2,
class A3>
8600template <
class TYPE>
8602#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8606Variant3<A1, A2, A3> >::type&
8607Variant3<A1, A2, A3>::operator=(TYPE&& value)
8609Variant3<A1, A2, A3>&
8613#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8616 TYPE& lvalue = value;
8617 Imp::operator=(MoveUtil::move(lvalue));
8623template <
class A1,
class A2,
class A3>
8625Variant3<A1, A2, A3>&
8626Variant3<A1, A2, A3>::operator=(
const Variant3& rhs)
8628 Imp::operator=(
static_cast<const Imp&
>(rhs));
8632template <
class A1,
class A2,
class A3>
8634Variant3<A1, A2, A3>&
8637 Variant3& lvalue = rhs;
8639 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8648template <
class A1,
class A2,
class A3,
class A4>
8650Variant4<A1, A2, A3, A4>::Variant4()
8654template <
class A1,
class A2,
class A3,
class A4>
8655template <
class TYPE_OR_ALLOCATOR>
8657Variant4<A1, A2, A3, A4>::
8658Variant4(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8659: Imp(valueOrAllocator)
8663template <
class A1,
class A2,
class A3,
class A4>
8664template <
class TYPE>
8666Variant4<A1, A2, A3, A4>::
8668: Imp(value, basicAllocator)
8672template <
class A1,
class A2,
class A3,
class A4>
8673template <
class TYPE>
8675Variant4<A1, A2, A3, A4>::
8676#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8677Variant4(TYPE&& value,
8682 typename bsl::remove_reference<TYPE>::type>::type>::value
8688Variant4(
bslmf::MovableRef<TYPE> value)
8689: Imp(MoveUtil::move(value))
8694template <
class A1,
class A2,
class A3,
class A4>
8695template <
class TYPE>
8697Variant4<A1, A2, A3, A4>::
8698#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8699Variant4(TYPE&& value,
8704 typename bsl::remove_reference<TYPE>::type>::type>::value,
8708Variant4(
bslmf::MovableRef<TYPE> value,
8709 bslma::Allocator *basicAllocator)
8710: Imp(MoveUtil::move(value), basicAllocator)
8715template <
class A1,
class A2,
class A3,
class A4>
8717Variant4<A1, A2, A3, A4>::
8719: Imp(static_cast<const Imp&>(original), basicAllocator)
8723template <
class A1,
class A2,
class A3,
class A4>
8725Variant4<A1, A2, A3, A4>::
8727: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
8731template <
class A1,
class A2,
class A3,
class A4>
8733Variant4<A1, A2, A3, A4>::
8736: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
8742template <
class A1,
class A2,
class A3,
class A4>
8743template <
class TYPE>
8745Variant4<A1, A2, A3, A4>&
8746Variant4<A1, A2, A3, A4>::operator=(
const TYPE& value)
8748 Imp::operator=(value);
8752template <
class A1,
class A2,
class A3,
class A4>
8753template <
class TYPE>
8755#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8759Variant4<A1, A2, A3, A4> >::type&
8760Variant4<A1, A2, A3, A4>::operator=(TYPE&& value)
8762Variant4<A1, A2, A3, A4>&
8766#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8769 TYPE& lvalue = value;
8770 Imp::operator=(MoveUtil::move(lvalue));
8776template <
class A1,
class A2,
class A3,
class A4>
8778Variant4<A1, A2, A3, A4>&
8779Variant4<A1, A2, A3, A4>::operator=(
const Variant4& rhs)
8781 Imp::operator=(
static_cast<const Imp&
>(rhs));
8785template <
class A1,
class A2,
class A3,
class A4>
8787Variant4<A1, A2, A3, A4>&
8790 Variant4& lvalue = rhs;
8792 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8801template <
class A1,
class A2,
class A3,
class A4,
class A5>
8803Variant5<A1, A2, A3, A4, A5>::Variant5()
8807template <
class A1,
class A2,
class A3,
class A4,
class A5>
8808template <
class TYPE_OR_ALLOCATOR>
8810Variant5<A1, A2, A3, A4, A5>::
8811Variant5(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8812: Imp(valueOrAllocator)
8816template <
class A1,
class A2,
class A3,
class A4,
class A5>
8817template <
class TYPE>
8819Variant5<A1, A2, A3, A4, A5>::
8821: Imp(value, basicAllocator)
8825template <
class A1,
class A2,
class A3,
class A4,
class A5>
8826template <
class TYPE>
8828Variant5<A1, A2, A3, A4, A5>::
8829#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8830Variant5(TYPE&& value,
8835 typename bsl::remove_reference<TYPE>::type>::type>::value
8841Variant5(
bslmf::MovableRef<TYPE> value)
8842: Imp(MoveUtil::move(value))
8847template <
class A1,
class A2,
class A3,
class A4,
class A5>
8848template <
class TYPE>
8850Variant5<A1, A2, A3, A4, A5>::
8851#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8852Variant5(TYPE&& value,
8857 typename bsl::remove_reference<TYPE>::type>::type>::value,
8861Variant5(
bslmf::MovableRef<TYPE> value,
8862 bslma::Allocator *basicAllocator)
8863: Imp(MoveUtil::move(value), basicAllocator)
8868template <
class A1,
class A2,
class A3,
class A4,
class A5>
8870Variant5<A1, A2, A3, A4, A5>::
8872: Imp(static_cast<const Imp&>(original), basicAllocator)
8876template <
class A1,
class A2,
class A3,
class A4,
class A5>
8878Variant5<A1, A2, A3, A4, A5>::
8880: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
8884template <
class A1,
class A2,
class A3,
class A4,
class A5>
8886Variant5<A1, A2, A3, A4, A5>::
8889: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
8895template <
class A1,
class A2,
class A3,
class A4,
class A5>
8896template <
class TYPE>
8898Variant5<A1, A2, A3, A4, A5>&
8899Variant5<A1, A2, A3, A4, A5>::operator=(
const TYPE& value)
8901 Imp::operator=(value);
8905template <
class A1,
class A2,
class A3,
class A4,
class A5>
8906template <
class TYPE>
8908#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8912Variant5<A1, A2, A3, A4, A5> >::type&
8913Variant5<A1, A2, A3, A4, A5>::operator=(TYPE&& value)
8915Variant5<A1, A2, A3, A4, A5>&
8919#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8922 TYPE& lvalue = value;
8923 Imp::operator=(MoveUtil::move(lvalue));
8929template <
class A1,
class A2,
class A3,
class A4,
class A5>
8931Variant5<A1, A2, A3, A4, A5>&
8932Variant5<A1, A2, A3, A4, A5>::operator=(
const Variant5& rhs)
8934 Imp::operator=(
static_cast<const Imp&
>(rhs));
8938template <
class A1,
class A2,
class A3,
class A4,
class A5>
8940Variant5<A1, A2, A3, A4, A5>&
8943 Variant5& lvalue = rhs;
8945 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
8954template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8956Variant6<A1, A2, A3, A4, A5, A6>::Variant6()
8960template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8961template <
class TYPE_OR_ALLOCATOR>
8963Variant6<A1, A2, A3, A4, A5, A6>::
8964Variant6(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
8965: Imp(valueOrAllocator)
8969template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8970template <
class TYPE>
8972Variant6<A1, A2, A3, A4, A5, A6>::
8974: Imp(value, basicAllocator)
8978template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
8979template <
class TYPE>
8981Variant6<A1, A2, A3, A4, A5, A6>::
8982#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
8983Variant6(TYPE&& value,
8988 typename bsl::remove_reference<TYPE>::type>::type>::value
8994Variant6(
bslmf::MovableRef<TYPE> value)
8995: Imp(MoveUtil::move(value))
9000template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
9001template <
class TYPE>
9003Variant6<A1, A2, A3, A4, A5, A6>::
9004#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9005Variant6(TYPE&& value,
9010 typename bsl::remove_reference<TYPE>::type>::type>::value,
9014Variant6(
bslmf::MovableRef<TYPE> value,
9015 bslma::Allocator *basicAllocator)
9016: Imp(MoveUtil::move(value), basicAllocator)
9021template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
9023Variant6<A1, A2, A3, A4, A5, A6>::
9025: Imp(static_cast<const Imp&>(original), basicAllocator)
9029template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
9031Variant6<A1, A2, A3, A4, A5, A6>::
9033: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
9037template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
9039Variant6<A1, A2, A3, A4, A5, A6>::
9042: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
9048template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
9049template <
class TYPE>
9051Variant6<A1, A2, A3, A4, A5, A6>&
9052Variant6<A1, A2, A3, A4, A5, A6>::operator=(
const TYPE& value)
9054 Imp::operator=(value);
9058template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
9059template <
class TYPE>
9061#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9065Variant6<A1, A2, A3, A4, A5, A6> >::type&
9066Variant6<A1, A2, A3, A4, A5, A6>::operator=(TYPE&& value)
9068Variant6<A1, A2, A3, A4, A5, A6>&
9072#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9075 TYPE& lvalue = value;
9076 Imp::operator=(MoveUtil::move(lvalue));
9082template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
9084Variant6<A1, A2, A3, A4, A5, A6>&
9085Variant6<A1, A2, A3, A4, A5, A6>::operator=(
const Variant6& rhs)
9087 Imp::operator=(
static_cast<const Imp&
>(rhs));
9091template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6>
9093Variant6<A1, A2, A3, A4, A5, A6>&
9096 Variant6& lvalue = rhs;
9098 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9107template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9109Variant7<A1, A2, A3, A4, A5, A6, A7>::Variant7()
9113template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9114template <
class TYPE_OR_ALLOCATOR>
9116Variant7<A1, A2, A3, A4, A5, A6, A7>::
9117Variant7(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9118: Imp(valueOrAllocator)
9122template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9123template <
class TYPE>
9125Variant7<A1, A2, A3, A4, A5, A6, A7>::
9127: Imp(value, basicAllocator)
9131template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9132template <
class TYPE>
9134Variant7<A1, A2, A3, A4, A5, A6, A7>::
9135#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9136Variant7(TYPE&& value,
9141 typename bsl::remove_reference<TYPE>::type>::type>::value
9147Variant7(
bslmf::MovableRef<TYPE> value)
9148: Imp(MoveUtil::move(value))
9153template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9154template <
class TYPE>
9156Variant7<A1, A2, A3, A4, A5, A6, A7>::
9157#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9158Variant7(TYPE&& value,
9163 typename bsl::remove_reference<TYPE>::type>::type>::value,
9167Variant7(
bslmf::MovableRef<TYPE> value,
9168 bslma::Allocator *basicAllocator)
9169: Imp(MoveUtil::move(value), basicAllocator)
9174template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9176Variant7<A1, A2, A3, A4, A5, A6, A7>::
9178: Imp(static_cast<const Imp&>(original), basicAllocator)
9182template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9184Variant7<A1, A2, A3, A4, A5, A6, A7>::
9186: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
9190template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9192Variant7<A1, A2, A3, A4, A5, A6, A7>::
9195: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
9201template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9202template <
class TYPE>
9204Variant7<A1, A2, A3, A4, A5, A6, A7>&
9205Variant7<A1, A2, A3, A4, A5, A6, A7>::operator=(
const TYPE& value)
9207 Imp::operator=(value);
9211template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9212template <
class TYPE>
9214#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9218Variant7<A1, A2, A3, A4, A5, A6, A7> >::type&
9219Variant7<A1, A2, A3, A4, A5, A6, A7>::operator=(TYPE&& value)
9221Variant7<A1, A2, A3, A4, A5, A6, A7>&
9225#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9228 TYPE& lvalue = value;
9229 Imp::operator=(MoveUtil::move(lvalue));
9235template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9237Variant7<A1, A2, A3, A4, A5, A6, A7>&
9238Variant7<A1, A2, A3, A4, A5, A6, A7>::
9239operator=(
const Variant7& rhs)
9241 Imp::operator=(
static_cast<const Imp&
>(rhs));
9245template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7>
9247Variant7<A1, A2, A3, A4, A5, A6, A7>&
9248Variant7<A1, A2, A3, A4, A5, A6, A7>::
9251 Variant7& lvalue = rhs;
9253 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9262template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9265Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::Variant8()
9269template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9271template <
class TYPE_OR_ALLOCATOR>
9273Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9274Variant8(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9275: Imp(valueOrAllocator)
9279template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9281template <
class TYPE>
9283Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9285: Imp(value, basicAllocator)
9289template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9291template <
class TYPE>
9293Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9294#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9295Variant8(TYPE&& value,
9300 typename bsl::remove_reference<TYPE>::type>::type>::value
9306Variant8(
bslmf::MovableRef<TYPE> value)
9307: Imp(MoveUtil::move(value))
9312template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9314template <
class TYPE>
9316Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9317#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9318Variant8(TYPE&& value,
9323 typename bsl::remove_reference<TYPE>::type>::type>::value,
9327Variant8(
bslmf::MovableRef<TYPE> value,
9328 bslma::Allocator *basicAllocator)
9329: Imp(MoveUtil::move(value), basicAllocator)
9334template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9337Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9339: Imp(static_cast<const Imp&>(original), basicAllocator)
9343template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9346Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9348: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
9352template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9355Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9358: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
9364template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9366template <
class TYPE>
9368Variant8<A1, A2, A3, A4, A5, A6, A7, A8>&
9369Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::operator=(
const TYPE& value)
9371 Imp::operator=(value);
9375template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9377template <
class TYPE>
9379#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9383Variant8<A1, A2, A3, A4, A5, A6, A7, A8> >::type&
9384Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9385operator=(TYPE&& value)
9387Variant8<A1, A2, A3, A4, A5, A6, A7, A8>&
9388Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9392#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9395 TYPE& lvalue = value;
9396 Imp::operator=(MoveUtil::move(lvalue));
9402template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9405Variant8<A1, A2, A3, A4, A5, A6, A7, A8>&
9406Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9407operator=(
const Variant8& rhs)
9409 Imp::operator=(
static_cast<const Imp&
>(rhs));
9413template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9416Variant8<A1, A2, A3, A4, A5, A6, A7, A8>&
9417Variant8<A1, A2, A3, A4, A5, A6, A7, A8>::
9420 Variant8& lvalue = rhs;
9422 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9431template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9434Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::Variant9()
9438template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9440template <
class TYPE_OR_ALLOCATOR>
9442Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9443Variant9(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9444: Imp(valueOrAllocator)
9448template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9450template <
class TYPE>
9452Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9454: Imp(value, basicAllocator)
9458template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9460template <
class TYPE>
9462Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9463#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9464Variant9(TYPE&& value,
9469 typename bsl::remove_reference<TYPE>::type>::type>::value
9475Variant9(
bslmf::MovableRef<TYPE> value)
9476: Imp(MoveUtil::move(value))
9481template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9483template <
class TYPE>
9485Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9486#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9487Variant9(TYPE&& value,
9492 typename bsl::remove_reference<TYPE>::type>::type>::value,
9496Variant9(
bslmf::MovableRef<TYPE> value,
9497 bslma::Allocator *basicAllocator)
9498: Imp(MoveUtil::move(value), basicAllocator)
9503template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9506Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9508: Imp(static_cast<const Imp&>(original), basicAllocator)
9512template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9515Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9517: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
9521template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9524Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9527: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
9533template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9535template <
class TYPE>
9537Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>&
9538Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9539operator=(
const TYPE& value)
9541 Imp::operator=(value);
9545template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9547template <
class TYPE>
9549#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9553Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9> >::type&
9554Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9555operator=(TYPE&& value)
9557Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>&
9558Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9562#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9565 TYPE& lvalue = value;
9566 Imp::operator=(MoveUtil::move(lvalue));
9572template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9575Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>&
9576Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9577operator=(
const Variant9& rhs)
9579 Imp::operator=(
static_cast<const Imp&
>(rhs));
9583template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9586Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>&
9587Variant9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::
9590 Variant9& lvalue = rhs;
9592 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9601template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9602 class A8,
class A9,
class A10>
9604Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::Variant10()
9608template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9609 class A8,
class A9,
class A10>
9610template <
class TYPE_OR_ALLOCATOR>
9612Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9613Variant10(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9614: Imp(valueOrAllocator)
9618template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9619 class A8,
class A9,
class A10>
9620template <
class TYPE>
9622Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9624: Imp(value, basicAllocator)
9628template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9629 class A8,
class A9,
class A10>
9630template <
class TYPE>
9632Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9633#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9634Variant10(TYPE&& value,
9639 typename bsl::remove_reference<TYPE>::type>::type>::value
9645Variant10(
bslmf::MovableRef<TYPE> value)
9646: Imp(MoveUtil::move(value))
9651template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9652 class A8,
class A9,
class A10>
9653template <
class TYPE>
9655Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9656#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9657Variant10(TYPE&& value,
9662 typename bsl::remove_reference<TYPE>::type>::type>::value,
9666Variant10(
bslmf::MovableRef<TYPE> value,
9667 bslma::Allocator *basicAllocator)
9668: Imp(MoveUtil::move(value), basicAllocator)
9673template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9674 class A8,
class A9,
class A10>
9676Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9678: Imp(static_cast<const Imp&>(original), basicAllocator)
9682template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9683 class A8,
class A9,
class A10>
9685Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9687: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
9691template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9692 class A8,
class A9,
class A10>
9694Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9697: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
9703template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9704 class A8,
class A9,
class A10>
9705template <
class TYPE>
9707Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>&
9708Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9709operator=(
const TYPE& value)
9711 Imp::operator=(value);
9715template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9716 class A8,
class A9,
class A10>
9717template <
class TYPE>
9719#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9721 !
bsl::is_same<Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>,
9723Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> >::type&
9724Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9725operator=(TYPE&& value)
9727Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>&
9728Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9732#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9735 TYPE& lvalue = value;
9736 Imp::operator=(MoveUtil::move(lvalue));
9742template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9743 class A8,
class A9,
class A10>
9745Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>&
9746Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9747operator=(
const Variant10& rhs)
9749 Imp::operator=(
static_cast<const Imp&
>(rhs));
9753template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
class A7,
9754 class A8,
class A9,
class A10>
9756Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>&
9757Variant10<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10>::
9760 Variant10& lvalue = rhs;
9762 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
9771template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9772 class A7,
class A8,
class A9,
class A10,
class A11>
9774Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9779template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9780 class A7,
class A8,
class A9,
class A10,
class A11>
9781template <
class TYPE_OR_ALLOCATOR>
9783Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9784Variant11(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9785: Imp(valueOrAllocator)
9789template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9790 class A7,
class A8,
class A9,
class A10,
class A11>
9791template <
class TYPE>
9793Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9795: Imp(value, basicAllocator)
9799template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9800 class A7,
class A8,
class A9,
class A10,
class A11>
9801template <
class TYPE>
9803Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9804#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9805Variant11(TYPE&& value,
9810 typename bsl::remove_reference<TYPE>::type>::type>::value
9816Variant11(
bslmf::MovableRef<TYPE> value)
9817: Imp(MoveUtil::move(value))
9822template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9823 class A7,
class A8,
class A9,
class A10,
class A11>
9824template <
class TYPE>
9826Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9827#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9828Variant11(TYPE&& value,
9833 typename bsl::remove_reference<TYPE>::type>::type>::value,
9837Variant11(
bslmf::MovableRef<TYPE> value,
9838 bslma::Allocator *basicAllocator)
9839: Imp(MoveUtil::move(value), basicAllocator)
9844template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9845 class A7,
class A8,
class A9,
class A10,
class A11>
9847Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9849: Imp(static_cast<const Imp&>(original), basicAllocator)
9853template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9854 class A7,
class A8,
class A9,
class A10,
class A11>
9856Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9858: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
9862template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9863 class A7,
class A8,
class A9,
class A10,
class A11>
9865Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9868: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
9874template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9875 class A7,
class A8,
class A9,
class A10,
class A11>
9876template <
class TYPE>
9878Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>&
9879Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9880operator=(
const TYPE& value)
9882 Imp::operator=(value);
9886template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9887 class A7,
class A8,
class A9,
class A10,
class A11>
9888template <
class TYPE>
9890#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9892 !
bsl::is_same<Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>,
9894Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> >::type&
9895Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9896operator=(TYPE&& value)
9898Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>&
9899Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9903#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9906 TYPE& lvalue = value;
9907 Imp::operator=(MoveUtil::move(lvalue));
9913template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9914 class A7,
class A8,
class A9,
class A10,
class A11>
9916Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>&
9917Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9918operator=(
const Variant11& rhs)
9920 Imp::operator=(
static_cast<const Imp&
>(rhs));
9924template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9925 class A7,
class A8,
class A9,
class A10,
class A11>
9927Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>&
9928Variant11<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11>::
9931 Variant11& lvalue = rhs;
9933 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
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>
9945Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9950template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9951 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9952template <
class TYPE_OR_ALLOCATOR>
9954Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9955Variant12(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
9956: Imp(valueOrAllocator)
9960template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9961 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9962template <
class TYPE>
9964Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9966: Imp(value, basicAllocator)
9970template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9971 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9972template <
class TYPE>
9974Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9975#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9976Variant12(TYPE&& value,
9981 typename bsl::remove_reference<TYPE>::type>::type>::value
9987Variant12(
bslmf::MovableRef<TYPE> value)
9988: Imp(MoveUtil::move(value))
9993template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
9994 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
9995template <
class TYPE>
9997Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
9998#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
9999Variant12(TYPE&& value,
10004 typename bsl::remove_reference<TYPE>::type>::type>::value,
10008Variant12(
bslmf::MovableRef<TYPE> value,
10009 bslma::Allocator *basicAllocator)
10010: Imp(MoveUtil::move(value), basicAllocator)
10015template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10016 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
10018Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
10020: Imp(static_cast<const Imp&>(original), basicAllocator)
10024template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10025 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
10027Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
10029: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
10033template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10034 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
10036Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
10039: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
10045template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10046 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
10047template <
class TYPE>
10049Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>&
10050Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
10051operator=(
const TYPE& value)
10053 Imp::operator=(value);
10057template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10058 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
10059template <
class TYPE>
10061#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10063 !
bsl::is_same<Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>,
10065Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> >::type&
10066Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
10067operator=(TYPE&& value)
10069Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>&
10070Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
10074#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10077 TYPE& lvalue = value;
10078 Imp::operator=(MoveUtil::move(lvalue));
10084template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10085 class A7,
class A8,
class A9,
class A10,
class A11,
class A12>
10087Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>&
10088Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
10089operator=(
const Variant12& rhs)
10091 Imp::operator=(
static_cast<const Imp&
>(rhs));
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>
10098Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>&
10099Variant12<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12>::
10102 Variant12& lvalue = rhs;
10104 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10113template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10114 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10117Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10122template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10123 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10125template <
class TYPE_OR_ALLOCATOR>
10127Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10128Variant13(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10129: Imp(valueOrAllocator)
10133template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10134 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10136template <
class TYPE>
10138Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10140: Imp(value, basicAllocator)
10144template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10145 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10147template <
class TYPE>
10149Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10150#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10151Variant13(TYPE&& value,
10156 typename bsl::remove_reference<TYPE>::type>::type>::value
10162Variant13(
bslmf::MovableRef<TYPE> value)
10163: Imp(MoveUtil::move(value))
10168template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10169 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10171template <
class TYPE>
10173Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10174#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10175Variant13(TYPE&& value,
10180 typename bsl::remove_reference<TYPE>::type>::type>::value,
10184Variant13(
bslmf::MovableRef<TYPE> value,
10185 bslma::Allocator *basicAllocator)
10186: Imp(MoveUtil::move(value), basicAllocator)
10191template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10192 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10195Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10197: Imp(static_cast<const Imp&>(original), basicAllocator)
10201template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10202 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10205Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10207: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
10211template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10212 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10215Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10218: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
10224template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10225 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10227template <
class TYPE>
10229Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>&
10230Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10231operator=(
const TYPE& value)
10233 Imp::operator=(value);
10237template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10238 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10240template <
class TYPE>
10242#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10244 !
bsl::is_same<Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
10247Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> >::type&
10248Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10249operator=(TYPE&& value)
10251Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>&
10252Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10256#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10259 TYPE& lvalue = value;
10260 Imp::operator=(MoveUtil::move(lvalue));
10266template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10267 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10270Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>&
10271Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10272operator=(
const Variant13& rhs)
10274 Imp::operator=(
static_cast<const Imp&
>(rhs));
10278template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10279 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10282Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>&
10283Variant13<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13>::
10286 Variant13& lvalue = rhs;
10288 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10297template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10298 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10299 class A13,
class A14>
10301Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10306template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10307 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10308 class A13,
class A14>
10309template <
class TYPE_OR_ALLOCATOR>
10311Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10312Variant14(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10313: Imp(valueOrAllocator)
10317template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10318 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10319 class A13,
class A14>
10320template <
class TYPE>
10322Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10324: Imp(value, basicAllocator)
10328template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10329 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10330 class A13,
class A14>
10331template <
class TYPE>
10333Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10334#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10335Variant14(TYPE&& value,
10340 typename bsl::remove_reference<TYPE>::type>::type>::value
10346Variant14(
bslmf::MovableRef<TYPE> value)
10347: Imp(MoveUtil::move(value))
10352template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10353 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10354 class A13,
class A14>
10355template <
class TYPE>
10357Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10358#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10359Variant14(TYPE&& value,
10364 typename bsl::remove_reference<TYPE>::type>::type>::value,
10368Variant14(
bslmf::MovableRef<TYPE> value,
10369 bslma::Allocator *basicAllocator)
10370: Imp(MoveUtil::move(value), basicAllocator)
10375template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10376 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10377 class A13,
class A14>
10379Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10381: Imp(static_cast<const Imp&>(original), basicAllocator)
10385template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10386 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10387 class A13,
class A14>
10389Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10391: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
10395template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10396 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10397 class A13,
class A14>
10399Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10402: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
10408template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10409 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10410 class A13,
class A14>
10411template <
class TYPE>
10413Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>&
10414Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10415operator=(
const TYPE& value)
10417 Imp::operator=(value);
10421template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10422 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10423 class A13,
class A14>
10424template <
class TYPE>
10426#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10428 !
bsl::is_same<Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12,
10431Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> >::type&
10432Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10433operator=(TYPE&& value)
10435Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>&
10436Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10440#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10443 TYPE& lvalue = value;
10444 Imp::operator=(MoveUtil::move(lvalue));
10450template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10451 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10452 class A13,
class A14>
10454Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>&
10455Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10456operator=(
const Variant14& rhs)
10458 Imp::operator=(
static_cast<const Imp&
>(rhs));
10462template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10463 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10464 class A13,
class A14>
10466Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>&
10467Variant14<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14>::
10470 Variant14& lvalue = rhs;
10472 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10481template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10482 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10483 class A13,
class A14,
class A15>
10485Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10490template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10491 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10492 class A13,
class A14,
class A15>
10493template <
class TYPE_OR_ALLOCATOR>
10495Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10496Variant15(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10497: Imp(valueOrAllocator)
10501template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10502 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10503 class A13,
class A14,
class A15>
10504template <
class TYPE>
10506Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10508: Imp(value, basicAllocator)
10512template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10513 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10514 class A13,
class A14,
class A15>
10515template <
class TYPE>
10517Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10518#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10519Variant15(TYPE&& value,
10524 typename bsl::remove_reference<TYPE>::type>::type>::value
10530Variant15(
bslmf::MovableRef<TYPE> value)
10531: Imp(MoveUtil::move(value))
10536template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10537 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10538 class A13,
class A14,
class A15>
10539template <
class TYPE>
10541Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10542#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10543Variant15(TYPE&& value,
10548 typename bsl::remove_reference<TYPE>::type>::type>::value,
10552Variant15(
bslmf::MovableRef<TYPE> value,
10553 bslma::Allocator *basicAllocator)
10554: Imp(MoveUtil::move(value), basicAllocator)
10559template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10560 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10561 class A13,
class A14,
class A15>
10563Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10565: Imp(static_cast<const Imp&>(original), basicAllocator)
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>
10573Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10575: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
10579template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10580 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10581 class A13,
class A14,
class A15>
10583Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10586: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
10592template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10593 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10594 class A13,
class A14,
class A15>
10595template <
class TYPE>
10597Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>&
10598Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10599operator=(
const TYPE& value)
10601 Imp::operator=(value);
10605template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10606 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10607 class A13,
class A14,
class A15>
10608template <
class TYPE>
10610#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10612 !
bsl::is_same<Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11,
10613 A12, A13, A14, A15>,
10615Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10617Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10618operator=(TYPE&& value)
10620Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>&
10621Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10625#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10628 TYPE& lvalue = value;
10629 Imp::operator=(MoveUtil::move(lvalue));
10635template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10636 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10637 class A13,
class A14,
class A15>
10639Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>&
10640Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10641operator=(
const Variant15& rhs)
10643 Imp::operator=(
static_cast<const Imp&
>(rhs));
10647template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10648 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10649 class A13,
class A14,
class A15>
10651Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>&
10652Variant15<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15>::
10655 Variant15& lvalue = rhs;
10657 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10666template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10667 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10668 class A13,
class A14,
class A15,
class A16>
10670Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10676template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10677 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10678 class A13,
class A14,
class A15,
class A16>
10679template <
class TYPE_OR_ALLOCATOR>
10681Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10683Variant16(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10684: Imp(valueOrAllocator)
10688template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10689 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10690 class A13,
class A14,
class A15,
class A16>
10691template <
class TYPE>
10693Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10696: Imp(value, basicAllocator)
10700template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10701 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10702 class A13,
class A14,
class A15,
class A16>
10703template <
class TYPE>
10705Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10707#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10708Variant16(TYPE&& value,
10713 typename bsl::remove_reference<TYPE>::type>::type>::value
10719Variant16(
bslmf::MovableRef<TYPE> value)
10720: Imp(MoveUtil::move(value))
10725template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10726 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10727 class A13,
class A14,
class A15,
class A16>
10728template <
class TYPE>
10730Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10732#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10733Variant16(TYPE&& value,
10738 typename bsl::remove_reference<TYPE>::type>::type>::value,
10742Variant16(
bslmf::MovableRef<TYPE> value,
10743 bslma::Allocator *basicAllocator)
10744: Imp(MoveUtil::move(value), basicAllocator)
10749template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10750 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10751 class A13,
class A14,
class A15,
class A16>
10753Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10756: Imp(static_cast<const Imp&>(original), basicAllocator)
10760template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10761 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10762 class A13,
class A14,
class A15,
class A16>
10764Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10767: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
10771template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10772 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10773 class A13,
class A14,
class A15,
class A16>
10775Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10779: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
10785template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10786 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10787 class A13,
class A14,
class A15,
class A16>
10788template <
class TYPE>
10790Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10792Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10794operator=(
const TYPE& value)
10796 Imp::operator=(value);
10800template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10801 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10802 class A13,
class A14,
class A15,
class A16>
10803template <
class TYPE>
10805#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10807 !
bsl::is_same<Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11,
10808 A12, A13, A14, A15, A16>,
10810Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10812Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10813 A16>::operator=(TYPE&& value)
10815Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10817Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
10821#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10824 TYPE& lvalue = value;
10825 Imp::operator=(MoveUtil::move(lvalue));
10831template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10832 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10833 class A13,
class A14,
class A15,
class A16>
10835Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10837Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10839operator=(
const Variant16& rhs)
10841 Imp::operator=(
static_cast<const Imp&
>(rhs));
10845template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10846 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10847 class A13,
class A14,
class A15,
class A16>
10849Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10851Variant16<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10855 Variant16& lvalue = rhs;
10857 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
10866template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10867 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10868 class A13,
class A14,
class A15,
class A16,
class A17>
10870Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10876template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10877 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10878 class A13,
class A14,
class A15,
class A16,
class A17>
10879template <
class TYPE_OR_ALLOCATOR>
10881Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10883Variant17(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
10884: Imp(valueOrAllocator)
10888template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10889 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10890 class A13,
class A14,
class A15,
class A16,
class A17>
10891template <
class TYPE>
10893Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10896: Imp(value, basicAllocator)
10900template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10901 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10902 class A13,
class A14,
class A15,
class A16,
class A17>
10903template <
class TYPE>
10905Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10907#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10908Variant17(TYPE&& value,
10913 typename bsl::remove_reference<TYPE>::type>::type>::value
10919Variant17(
bslmf::MovableRef<TYPE> value)
10920: Imp(MoveUtil::move(value))
10925template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10926 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10927 class A13,
class A14,
class A15,
class A16,
class A17>
10928template <
class TYPE>
10930Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10932#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
10933Variant17(TYPE&& value,
10938 typename bsl::remove_reference<TYPE>::type>::type>::value,
10942Variant17(
bslmf::MovableRef<TYPE> value,
10943 bslma::Allocator *basicAllocator)
10944: Imp(MoveUtil::move(value), basicAllocator)
10949template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10950 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10951 class A13,
class A14,
class A15,
class A16,
class A17>
10953Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10956: Imp(static_cast<const Imp&>(original), basicAllocator)
10960template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10961 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10962 class A13,
class A14,
class A15,
class A16,
class A17>
10964Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10967: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
10971template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10972 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10973 class A13,
class A14,
class A15,
class A16,
class A17>
10975Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10979: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
10985template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
10986 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
10987 class A13,
class A14,
class A15,
class A16,
class A17>
10988template <
class TYPE>
10990Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10992Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
10994operator=(
const TYPE& value)
10996 Imp::operator=(value);
11000template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11001 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11002 class A13,
class A14,
class A15,
class A16,
class A17>
11003template <
class TYPE>
11005#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11007 !
bsl::is_same<Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11,
11008 A12, A13, A14, A15, A16, A17>,
11010Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11012Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11013 A16, A17>::operator=(TYPE&& value)
11015Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11017Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11021#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11024 TYPE& lvalue = value;
11025 Imp::operator=(MoveUtil::move(lvalue));
11031template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11032 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11033 class A13,
class A14,
class A15,
class A16,
class A17>
11035Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11037Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11039operator=(
const Variant17& rhs)
11041 Imp::operator=(
static_cast<const Imp&
>(rhs));
11045template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11046 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11047 class A13,
class A14,
class A15,
class A16,
class A17>
11049Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11051Variant17<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11055 Variant17& lvalue = rhs;
11057 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
11066template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11067 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11068 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11070Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11071 A15, A16, A17, A18>::
11076template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11077 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11078 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11079template <
class TYPE_OR_ALLOCATOR>
11081Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11082 A15, A16, A17, A18>::
11083Variant18(
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>
11091template <
class TYPE>
11093Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11094 A15, A16, A17, A18>::
11096: Imp(value, basicAllocator)
11100template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11101 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11102 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11103template <
class TYPE>
11105Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11106 A15, A16, A17, A18>::
11107#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11108Variant18(TYPE&& value,
11113 typename bsl::remove_reference<TYPE>::type>::type>::value
11119Variant18(
bslmf::MovableRef<TYPE> value)
11120: Imp(MoveUtil::move(value))
11125template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11126 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11127 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11128template <
class TYPE>
11130Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11131 A15, A16, A17, A18>::
11132#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11133Variant18(TYPE&& value,
11138 typename bsl::remove_reference<TYPE>::type>::type>::value,
11142Variant18(
bslmf::MovableRef<TYPE> value,
11143 bslma::Allocator *basicAllocator)
11144: Imp(MoveUtil::move(value), basicAllocator)
11149template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11150 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11151 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11153Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11154 A15, A16, A17, A18>::
11156: Imp(static_cast<const Imp&>(original), basicAllocator)
11160template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11161 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11162 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11164Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11165 A15, A16, A17, A18>::
11167: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
11171template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11172 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11173 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11175Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11176 A15, A16, A17, A18>::
11179: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
11185template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11186 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11187 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11188template <
class TYPE>
11190Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11191 A15, A16, A17, A18>&
11192Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11193 A15, A16, A17, A18>::
11194operator=(
const TYPE& value)
11196 Imp::operator=(value);
11200template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11201 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11202 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11203template <
class TYPE>
11205#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11207 !
bsl::is_same<Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
11208 A11, A12, A13, A14, A15, A16, A17, A18>,
11210Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11211 A16, A17, A18> >::type&
11212Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11213 A16, A17, A18>::operator=(TYPE&& value)
11215Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11217Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11221#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11224 TYPE& lvalue = value;
11225 Imp::operator=(MoveUtil::move(lvalue));
11231template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11232 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11233 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11235Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11236 A15, A16, A17, A18>&
11237Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11238 A15, A16, A17, A18>::
11239operator=(
const Variant18& rhs)
11241 Imp::operator=(
static_cast<const Imp&
>(rhs));
11245template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11246 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11247 class A13,
class A14,
class A15,
class A16,
class A17,
class A18>
11249Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11250 A15, A16, A17, A18>&
11251Variant18<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11252 A15, A16, A17, A18>::
11255 Variant18& lvalue = rhs;
11257 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
11266template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11267 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11268 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11271Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11272 A15, A16, A17, A18, A19>::
11277template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11278 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11279 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11281template <
class TYPE_OR_ALLOCATOR>
11283Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11284 A15, A16, A17, A18, A19>::
11285Variant19(
const TYPE_OR_ALLOCATOR& valueOrAllocator)
11286: Imp(valueOrAllocator)
11290template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11291 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11292 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11294template <
class TYPE>
11296Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11297 A15, A16, A17, A18, A19>::
11299: Imp(value, basicAllocator)
11303template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11304 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11305 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11307template <
class TYPE>
11309Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11310 A15, A16, A17, A18, A19>::
11311#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11312Variant19(TYPE&& value,
11317 typename bsl::remove_reference<TYPE>::type>::type>::value
11323Variant19(
bslmf::MovableRef<TYPE> value)
11324: Imp(MoveUtil::move(value))
11329template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11330 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11331 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11333template <
class TYPE>
11335Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11336 A15, A16, A17, A18, A19>::
11337#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11338Variant19(TYPE&& value,
11343 typename bsl::remove_reference<TYPE>::type>::type>::value,
11347Variant19(
bslmf::MovableRef<TYPE> value,
11348 bslma::Allocator *basicAllocator)
11349: Imp(MoveUtil::move(value), basicAllocator)
11354template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11355 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11356 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11359Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11360 A15, A16, A17, A18, A19>::
11362: Imp(static_cast<const Imp&>(original), basicAllocator)
11366template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11367 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11368 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11371Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11372 A15, A16, A17, A18, A19>::
11374: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))))
11378template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11379 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11380 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11383Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11384 A15, A16, A17, A18, A19>::
11387: Imp(MoveUtil::move(static_cast<Imp&>(MoveUtil::access(original))),
11393template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11394 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11395 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11397template <
class TYPE>
11399Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11400 A15, A16, A17, A18, A19>&
11401Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11402 A15, A16, A17, A18, A19>::
11403operator=(
const TYPE& value)
11405 Imp::operator=(value);
11409template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11410 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11411 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11413template <
class TYPE>
11415#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11417 !
bsl::is_same<Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10,
11418 A11, A12, A13, A14, A15, A16, A17, A18, A19>,
11420Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11421 A16, A17, A18, A19> >::type&
11422Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11423 A16, A17, A18, A19>::operator=(TYPE&& value)
11425Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11426 A16, A17, A18, A19>&
11427Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15,
11431#if defined(BSLMF_MOVABLEREF_USES_RVALUE_REFERENCES)
11434 TYPE& lvalue = value;
11435 Imp::operator=(MoveUtil::move(lvalue));
11441template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11442 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11443 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11446Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11447 A15, A16, A17, A18, A19>&
11448Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11449 A15, A16, A17, A18, A19>::
11450operator=(
const Variant19& rhs)
11452 Imp::operator=(
static_cast<const Imp&
>(rhs));
11456template <
class A1,
class A2,
class A3,
class A4,
class A5,
class A6,
11457 class A7,
class A8,
class A9,
class A10,
class A11,
class A12,
11458 class A13,
class A14,
class A15,
class A16,
class A17,
class A18,
11461Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11462 A15, A16, A17, A18, A19>&
11463Variant19<A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14,
11464 A15, A16, A17, A18, A19>::
11467 Variant19& lvalue = rhs;
11469 Imp::operator=(MoveUtil::move(
static_cast<Imp&
>(lvalue)));
11477# error Not valid except when included from bdlb_variant.h
#define BSLMF_NESTED_TRAIT_DECLARATION(t_TYPE, t_TRAIT)
Definition bslmf_nestedtraitdeclaration.h:231
#define BSLMF_NESTED_TRAIT_DECLARATION_IF(t_TYPE, t_TRAIT, t_COND)
Definition bslmf_nestedtraitdeclaration.h:243
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
friend class VariantImp
Definition bdlb_variant.h:888
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
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
friend class VariantImp
Definition bdlb_variant.h:998
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
void reset()
Definition bdlb_variant.h:7472
STREAM & bdexStreamIn(STREAM &stream, int version)
DEPRECATED: Do not use.
Definition bdlb_variant.h:7661
bool is() const
Definition bdlb_variant.h:7605
~VariantImp()
Definition bdlb_variant.h:7216
int typeIndex() const
Definition bdlb_variant.h:7646
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)
Definition bdlb_variant.h:1517
TYPE & createInPlace(ARGS &&... arguments)
Definition bdlb_variant.h:7454
VariantImp & operator=(const TYPE &value)
STREAM & bdexStreamOut(STREAM &stream, int version) const
DEPRECATED: Do not use.
Definition bdlb_variant.h:7699
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
bool isUnset() const
Definition bdlb_variant.h:7612
TYPE & the()
Definition bdlb_variant.h:7517
VariantImp & assign(const TYPE &value)
void swap(VariantImp &other)
Definition bdlb_variant.h:7482
VariantImp & assignTo(const SOURCE_TYPE &value)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition bdlb_variant.h:7619
RESULT_TYPE operator()(ARGUMENT_TYPE &argument)
Definition bdlb_variant.h:6450
Variant_RawVisitorHelper(VISITOR *visitor)
Definition bdlb_variant.h:6439
Variant & operator=(const TYPE &value)
Variant()
Definition bdlb_variant.h:7923
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_REF(T)
Definition bsls_compilerfeatures.h:2012
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
bool operator!=(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
bool operator==(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
void swap(OptionValue &a, OptionValue &b)
void reset(TYPE *object)
Reset the value of the specified object to its default value.
int assign(LHS_TYPE *lhs, const RHS_TYPE &rhs)
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
void swap(array< VALUE_TYPE, SIZE > &lhs, array< VALUE_TYPE, SIZE > &rhs)
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
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
static Variant_ReturnValueHelper_YesType match(typename bsl::remove_reference< typename T::ResultType >::type *)
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