11#ifndef INCLUDED_BSLMF_INVOKERESULT_CPP03
12#define INCLUDED_BSLMF_INVOKERESULT_CPP03
63#ifdef COMPILING_BSLMF_INVOKERESULT_H
65#if defined(BSLS_COMPILERFEATURES_SUPPORT_DECLTYPE) \
66 && !(defined(BSLS_PLATFORM_CMP_MSVC) && BSLS_PLATFORM_CMP_VERSION == 1800)
71#define BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS 1
90struct InvokeResultDeductionFailed {
96 template <
class t_TYPE>
102#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
105#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT
106#define BSLMF_INVOKERESULT_VARIADIC_LIMIT 13
108#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT_A
109#define BSLMF_INVOKERESULT_VARIADIC_LIMIT_A BSLMF_INVOKERESULT_VARIADIC_LIMIT
113#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 0
114 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
117#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 1
118 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
121#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 2
122 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
125#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 3
126 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
129#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 4
130 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
133#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 5
134 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
137#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 6
138 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
141#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 7
142 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
145#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 8
146 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
149#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 9
150 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
153#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 10
154 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
157#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 11
158 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
161#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_A >= 12
162 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
164 ,
class = BSLS_COMPILERFEATURES_NILT>
165struct InvokeResult_BaseCalcUtil;
171template <
class t_FN,
class... t_ARGTYPES>
172struct InvokeResult_BaseCalcUtil;
186#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
189#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT
190#define BSLMF_INVOKERESULT_VARIADIC_LIMIT 13
192#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT_B
193#define BSLMF_INVOKERESULT_VARIADIC_LIMIT_B BSLMF_INVOKERESULT_VARIADIC_LIMIT
197#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 0
198 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
201#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 1
202 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
205#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 2
206 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
209#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 3
210 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
213#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 4
214 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
217#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 5
218 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
221#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 6
222 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
225#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 7
226 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
229#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 8
230 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
233#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 9
234 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
237#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 10
238 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
241#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 11
242 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
245#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 12
246 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
248 ,
class = BSLS_COMPILERFEATURES_NILT>
251#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 0
253class invoke_result<t_FN>
254:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN>::
260#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 1
261template <
class t_FN,
class t_ARGTYPES_01>
262class invoke_result<t_FN, t_ARGTYPES_01>
263:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01>::
269#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 2
270template <
class t_FN,
class t_ARGTYPES_01,
272class invoke_result<t_FN, t_ARGTYPES_01,
274:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
281#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 3
282template <
class t_FN,
class t_ARGTYPES_01,
285class invoke_result<t_FN, t_ARGTYPES_01,
288:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
296#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 4
297template <
class t_FN,
class t_ARGTYPES_01,
301class invoke_result<t_FN, t_ARGTYPES_01,
305:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
314#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 5
315template <
class t_FN,
class t_ARGTYPES_01,
320class invoke_result<t_FN, t_ARGTYPES_01,
325:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
335#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 6
336template <
class t_FN,
class t_ARGTYPES_01,
342class invoke_result<t_FN, t_ARGTYPES_01,
348:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
359#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 7
360template <
class t_FN,
class t_ARGTYPES_01,
367class invoke_result<t_FN, t_ARGTYPES_01,
374:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
386#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 8
387template <
class t_FN,
class t_ARGTYPES_01,
395class invoke_result<t_FN, t_ARGTYPES_01,
403:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
416#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 9
417template <
class t_FN,
class t_ARGTYPES_01,
426class invoke_result<t_FN, t_ARGTYPES_01,
435:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
449#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 10
450template <
class t_FN,
class t_ARGTYPES_01,
460class invoke_result<t_FN, t_ARGTYPES_01,
470:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
485#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 11
486template <
class t_FN,
class t_ARGTYPES_01,
497class invoke_result<t_FN, t_ARGTYPES_01,
508:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
524#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 12
525template <
class t_FN,
class t_ARGTYPES_01,
537class invoke_result<t_FN, t_ARGTYPES_01,
549:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
566#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 13
567template <
class t_FN,
class t_ARGTYPES_01,
580class invoke_result<t_FN, t_ARGTYPES_01,
593:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
612#ifdef BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES
615#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 0
617using invoke_result_t =
typename invoke_result<t_FN,
618 BSLS_COMPILERFEATURES_FILLT(13)
622#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 1
623template <
class t_FN,
class t_ARGTYPES_01>
624using invoke_result_t =
typename invoke_result<t_FN,
626 BSLS_COMPILERFEATURES_FILLT(12)
630#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 2
631template <
class t_FN,
class t_ARGTYPES_01,
633using invoke_result_t =
typename invoke_result<t_FN,
636 BSLS_COMPILERFEATURES_FILLT(11)
640#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 3
641template <
class t_FN,
class t_ARGTYPES_01,
644using invoke_result_t =
typename invoke_result<t_FN,
648 BSLS_COMPILERFEATURES_FILLT(10)
652#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 4
653template <
class t_FN,
class t_ARGTYPES_01,
657using invoke_result_t =
typename invoke_result<t_FN,
662 BSLS_COMPILERFEATURES_FILLT( 9)
666#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 5
667template <
class t_FN,
class t_ARGTYPES_01,
672using invoke_result_t =
typename invoke_result<t_FN,
678 BSLS_COMPILERFEATURES_FILLT( 8)
682#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 6
683template <
class t_FN,
class t_ARGTYPES_01,
689using invoke_result_t =
typename invoke_result<t_FN,
696 BSLS_COMPILERFEATURES_FILLT( 7)
700#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 7
701template <
class t_FN,
class t_ARGTYPES_01,
708using invoke_result_t =
typename invoke_result<t_FN,
716 BSLS_COMPILERFEATURES_FILLT( 6)
720#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 8
721template <
class t_FN,
class t_ARGTYPES_01,
729using invoke_result_t =
typename invoke_result<t_FN,
738 BSLS_COMPILERFEATURES_FILLT( 5)
742#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 9
743template <
class t_FN,
class t_ARGTYPES_01,
752using invoke_result_t =
typename invoke_result<t_FN,
762 BSLS_COMPILERFEATURES_FILLT( 4)
766#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 10
767template <
class t_FN,
class t_ARGTYPES_01,
777using invoke_result_t =
typename invoke_result<t_FN,
788 BSLS_COMPILERFEATURES_FILLT( 3)
792#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 11
793template <
class t_FN,
class t_ARGTYPES_01,
804using invoke_result_t =
typename invoke_result<t_FN,
816 BSLS_COMPILERFEATURES_FILLT( 2)
820#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 12
821template <
class t_FN,
class t_ARGTYPES_01,
833using invoke_result_t =
typename invoke_result<t_FN,
846 BSLS_COMPILERFEATURES_FILLT( 1)
850#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_B >= 13
851template <
class t_FN,
class t_ARGTYPES_01,
864using invoke_result_t =
typename invoke_result<t_FN,
878 BSLS_COMPILERFEATURES_FILLT( 0)
887template <
class t_FN,
class... t_ARGTYPES>
889:
public BloombergLP::bslmf::InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES...>::
894#ifdef BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES
897template <
class t_FN,
class... t_ARGTYPES>
898using invoke_result_t =
typename invoke_result<t_FN, t_ARGTYPES...>::type;
913#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
916#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT
917#define BSLMF_INVOKERESULT_VARIADIC_LIMIT 13
919#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT_C
920#define BSLMF_INVOKERESULT_VARIADIC_LIMIT_C BSLMF_INVOKERESULT_VARIADIC_LIMIT
923template <
bool t_IS_FUNCPTR,
924 bool t_IS_MEMFUNCPTR,
927#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 0
928 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
931#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 1
932 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
935#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 2
936 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
939#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 3
940 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
943#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 4
944 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
947#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 5
948 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
951#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 6
952 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
955#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 7
956 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
959#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 8
960 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
963#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 9
964 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
967#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 10
968 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
971#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 11
972 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
975#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 12
976 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
978 ,
class = BSLS_COMPILERFEATURES_NILT>
979struct InvokeResult_Imp;
983#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 0
985struct InvokeResult_BaseCalcUtil<t_FN> {
992 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
993 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1004 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1012#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 1
1013template <
class t_FN,
class t_ARGTYPES_01>
1014struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01> {
1021 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1022 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1033 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1042#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 2
1043template <
class t_FN,
class t_ARGTYPES_01,
1044 class t_ARGTYPES_02>
1045struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1053 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1054 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1065 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1075#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 3
1076template <
class t_FN,
class t_ARGTYPES_01,
1077 class t_ARGTYPES_02,
1078 class t_ARGTYPES_03>
1079struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1088 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1089 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1100 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1111#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 4
1112template <
class t_FN,
class t_ARGTYPES_01,
1113 class t_ARGTYPES_02,
1114 class t_ARGTYPES_03,
1115 class t_ARGTYPES_04>
1116struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1126 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1127 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1138 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1150#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 5
1151template <
class t_FN,
class t_ARGTYPES_01,
1152 class t_ARGTYPES_02,
1153 class t_ARGTYPES_03,
1154 class t_ARGTYPES_04,
1155 class t_ARGTYPES_05>
1156struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1167 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1168 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1179 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1192#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 6
1193template <
class t_FN,
class t_ARGTYPES_01,
1194 class t_ARGTYPES_02,
1195 class t_ARGTYPES_03,
1196 class t_ARGTYPES_04,
1197 class t_ARGTYPES_05,
1198 class t_ARGTYPES_06>
1199struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1211 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1212 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1223 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1237#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 7
1238template <
class t_FN,
class t_ARGTYPES_01,
1239 class t_ARGTYPES_02,
1240 class t_ARGTYPES_03,
1241 class t_ARGTYPES_04,
1242 class t_ARGTYPES_05,
1243 class t_ARGTYPES_06,
1244 class t_ARGTYPES_07>
1245struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1258 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1259 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1270 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1285#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 8
1286template <
class t_FN,
class t_ARGTYPES_01,
1287 class t_ARGTYPES_02,
1288 class t_ARGTYPES_03,
1289 class t_ARGTYPES_04,
1290 class t_ARGTYPES_05,
1291 class t_ARGTYPES_06,
1292 class t_ARGTYPES_07,
1293 class t_ARGTYPES_08>
1294struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1308 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1309 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1320 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1336#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 9
1337template <
class t_FN,
class t_ARGTYPES_01,
1338 class t_ARGTYPES_02,
1339 class t_ARGTYPES_03,
1340 class t_ARGTYPES_04,
1341 class t_ARGTYPES_05,
1342 class t_ARGTYPES_06,
1343 class t_ARGTYPES_07,
1344 class t_ARGTYPES_08,
1345 class t_ARGTYPES_09>
1346struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1361 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1362 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1373 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1390#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 10
1391template <
class t_FN,
class t_ARGTYPES_01,
1392 class t_ARGTYPES_02,
1393 class t_ARGTYPES_03,
1394 class t_ARGTYPES_04,
1395 class t_ARGTYPES_05,
1396 class t_ARGTYPES_06,
1397 class t_ARGTYPES_07,
1398 class t_ARGTYPES_08,
1399 class t_ARGTYPES_09,
1400 class t_ARGTYPES_10>
1401struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1417 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1418 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1429 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1447#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 11
1448template <
class t_FN,
class t_ARGTYPES_01,
1449 class t_ARGTYPES_02,
1450 class t_ARGTYPES_03,
1451 class t_ARGTYPES_04,
1452 class t_ARGTYPES_05,
1453 class t_ARGTYPES_06,
1454 class t_ARGTYPES_07,
1455 class t_ARGTYPES_08,
1456 class t_ARGTYPES_09,
1457 class t_ARGTYPES_10,
1458 class t_ARGTYPES_11>
1459struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1476 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1477 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1488 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1507#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 12
1508template <
class t_FN,
class t_ARGTYPES_01,
1509 class t_ARGTYPES_02,
1510 class t_ARGTYPES_03,
1511 class t_ARGTYPES_04,
1512 class t_ARGTYPES_05,
1513 class t_ARGTYPES_06,
1514 class t_ARGTYPES_07,
1515 class t_ARGTYPES_08,
1516 class t_ARGTYPES_09,
1517 class t_ARGTYPES_10,
1518 class t_ARGTYPES_11,
1519 class t_ARGTYPES_12>
1520struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1538 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1539 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1550 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1570#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_C >= 13
1571template <
class t_FN,
class t_ARGTYPES_01,
1572 class t_ARGTYPES_02,
1573 class t_ARGTYPES_03,
1574 class t_ARGTYPES_04,
1575 class t_ARGTYPES_05,
1576 class t_ARGTYPES_06,
1577 class t_ARGTYPES_07,
1578 class t_ARGTYPES_08,
1579 class t_ARGTYPES_09,
1580 class t_ARGTYPES_10,
1581 class t_ARGTYPES_11,
1582 class t_ARGTYPES_12,
1583 class t_ARGTYPES_13>
1584struct InvokeResult_BaseCalcUtil<t_FN, t_ARGTYPES_01,
1603 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1604 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1615 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1640template <
bool t_IS_FUNCPTR,
1641 bool t_IS_MEMFUNCPTR,
1642 bool t_IS_MEMOBJPTR,
1644 class... t_ARGTYPES>
1645struct InvokeResult_Imp;
1648template <
class t_FN,
class... t_ARGTYPES>
1649struct InvokeResult_BaseCalcUtil {
1656 k_IS_FUNCPTR = BloombergLP::bslmf::IsFunctionPointer<F>::value,
1657 k_IS_MEMFUNCPTR= BloombergLP::bslmf::IsMemberFunctionPointer<F>::value,
1668 typedef typename BloombergLP::bslmf::InvokeResult_Imp<k_IS_FUNCPTR,
1685struct InvokeResult_VoidChecker : Tag<true> {
1703template <
class t_TYPE>
1705operator,(
const t_TYPE&, InvokeResult_VoidChecker);
1708struct InvokeResult_Index {
1739 e_CONST_VOLATILE_VOIDPTR,
1751#ifdef BSLS_COMPILERFEATURES_SUPPORT_UTF8_CHAR_TYPE
1755#ifdef BSLS_COMPILERFEATURES_SUPPORT_UNICODE_CHAR_TYPES
1779 template <
class t_TP>
1781 template <
class t_TP>
1789template <
int t_INDEX>
struct InvokeResult_Type;
1798struct InvokeResult_Type<InvokeResult_Index::e_VOID>
1799 {
typedef void type; };
1801struct InvokeResult_Type<InvokeResult_Index::e_BOOL>
1802 {
typedef bool type; };
1804struct InvokeResult_Type<InvokeResult_Index::e_CHAR>
1805 {
typedef char type; };
1807struct InvokeResult_Type<InvokeResult_Index::e_SCHAR>
1808 {
typedef signed char type; };
1810struct InvokeResult_Type<InvokeResult_Index::e_UCHAR>
1811 {
typedef unsigned char type; };
1812#ifdef BSLS_COMPILERFEATURES_SUPPORT_UTF8_CHAR_TYPE
1814struct InvokeResult_Type<InvokeResult_Index::e_CHAR8_T>
1815 {
typedef char8_t type; };
1818struct InvokeResult_Type<InvokeResult_Index::e_WCHAR_T>
1819 {
typedef wchar_t type; };
1820#ifdef BSLS_COMPILERFEATURES_SUPPORT_UNICODE_CHAR_TYPES
1822struct InvokeResult_Type<InvokeResult_Index::e_CHAR16_T>
1823 {
typedef char16_t type; };
1825struct InvokeResult_Type<InvokeResult_Index::e_CHAR32_T>
1826 {
typedef char32_t type; };
1829struct InvokeResult_Type<InvokeResult_Index::e_SHORT>
1830 {
typedef short type; };
1832struct InvokeResult_Type<InvokeResult_Index::e_USHORT>
1833 {
typedef unsigned short type; };
1835struct InvokeResult_Type<InvokeResult_Index::e_INT>
1836 {
typedef int type; };
1838struct InvokeResult_Type<InvokeResult_Index::e_UNSIGNED>
1839 {
typedef unsigned type; };
1841struct InvokeResult_Type<InvokeResult_Index::e_LONG>
1842 {
typedef long type; };
1844struct InvokeResult_Type<InvokeResult_Index::e_ULONG>
1845 {
typedef unsigned long type; };
1847struct InvokeResult_Type<InvokeResult_Index::e_LONG_LONG>
1848 {
typedef long long type; };
1850struct InvokeResult_Type<InvokeResult_Index::e_ULONG_LONG>
1851 {
typedef unsigned long long type; };
1853struct InvokeResult_Type<InvokeResult_Index::e_FLOAT>
1854 {
typedef float type; };
1856struct InvokeResult_Type<InvokeResult_Index::e_DOUBLE>
1857 {
typedef double type; };
1859struct InvokeResult_Type<InvokeResult_Index::e_LONG_DOUBLE>
1860 {
typedef long double type; };
1862struct InvokeResult_Type<InvokeResult_Index::e_VOIDPTR>
1863 {
typedef void *type; };
1865struct InvokeResult_Type<InvokeResult_Index::e_CONST_VOIDPTR>
1866 {
typedef const void *type; };
1868struct InvokeResult_Type<InvokeResult_Index::e_VOLATILE_VOIDPTR>
1869 {
typedef volatile void *type; };
1871struct InvokeResult_Type<InvokeResult_Index::e_CONST_VOLATILE_VOIDPTR>
1872 {
typedef const volatile void *type; };
1874struct InvokeResult_Type<InvokeResult_Index::e_NULLPTR_T>
1877struct InvokeResult_Type<InvokeResult_Index::e_POINTER>
1878 {
typedef void *type; };
1880struct InvokeResult_Type<InvokeResult_Index::e_OTHER>
1881 {
typedef InvokeResultDeductionFailed type; };
1887struct InvokeResult_ImpUtils
1899 template <
class t_TP>
1908#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
1910 template <
class t_TP>
1916 template <
class t_TP>
1925#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
1932 template <
class t_SOME_TYPE>
1933 static typename bsl::add_rvalue_reference<t_SOME_TYPE>::type myDeclval();
1935 template <
class t_SOME_TYPE>
1936 static t_SOME_TYPE myDeclval();
1954 template <
class t_TP>
1956 template <
class t_TP>
1964 template <
class t_TP>
1966 template <
class t_TP>
1968 template <
class t_TP>
1970 template <
class t_TP>
1975 template <
class t_TP>
1976 static t_TP& uncv(
const t_TP&);
1977 template <
class t_TP>
1978 static t_TP& uncv(
const volatile t_TP&);
1984 template <
class t_TP>
1985 static t_TP& unpoint(t_TP&);
1986 template <
class t_TP>
1987 static const t_TP& unpoint(
const t_TP&);
1988 template <
class t_TP>
1991 template <
class t_TP>
1993 unpoint(t_TP *
const&);
1994 template <
class t_TP>
1996 unpoint(t_TP *
volatile&);
1997 template <
class t_TP>
1999 unpoint(t_TP *
const volatile&);
2013template <
class t_UNQUAL_TYPE,
2017struct InvokeResult_AddCVRef {
2024 t_UNQUAL_TYPE>::type CQualType;
2029 CQualType>::type CVQualType;
2036 CVQualType>::type type;
2039#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
2042#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT
2043#define BSLMF_INVOKERESULT_VARIADIC_LIMIT 13
2045#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT_D
2046#define BSLMF_INVOKERESULT_VARIADIC_LIMIT_D BSLMF_INVOKERESULT_VARIADIC_LIMIT
2049#ifndef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
2050template <
bool __Param__0,
2052#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 0
2053 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
2056#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 1
2057 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
2060#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 2
2061 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
2064#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 3
2065 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
2068#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 4
2069 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
2072#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 5
2073 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
2076#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 6
2077 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
2080#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 7
2081 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
2084#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 8
2085 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
2088#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 9
2089 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
2092#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 10
2093 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
2096#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 11
2097 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
2100#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 12
2101 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
2103 ,
class = BSLS_COMPILERFEATURES_NILT>
2104struct InvokeResult_FunctorDeduction;
2106#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 0
2107template <
bool __Param__0,
class t_FN>
2108struct InvokeResult_FunctorDeduction<__Param__0, t_FN
2109 > : InvokeResult_ImpUtils {
2116 uncv(myDeclval<t_FN>()()))),
2117 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2119 checkLvalue(myDeclval<t_FN>()(), 0)),
2120 k_IS_CONST_PTR = k_IS_POINTER &&
2122 myDeclval<t_FN>()())),
2123 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2127 uncv(unpoint(myDeclval<t_FN>()())))),
2129 unpoint(myDeclval<t_FN>()()))),
2131 unpoint(myDeclval<t_FN>()()))),
2132 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2133 (
int)InvokeResult_Index::e_OTHER)
2137 ! k_CANT_DEDUCE_TYPE,
2138 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2140 >::type UnqualTargetType;
2143 InvokeResult_AddCVRef<UnqualTargetType,
2144 static_cast<bool>(k_IS_CONST_TARGET)
2145 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2146 static_cast<bool>(k_IS_VOLATILE_TARGET)
2147 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2148 false>::type CVQualTargetType;
2152 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2154 CVQualTargetType>::type UnqualType;
2157 InvokeResult_AddCVRef<
2159 static_cast<bool>(k_IS_CONST_PTR)
2160 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2161 static_cast<bool>(k_IS_VOLATILE_PTR)
2162 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2163 static_cast<bool>(k_IS_LVALUE)
2164 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2171#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 1
2172template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01>
2173struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01
2174 > : InvokeResult_ImpUtils {
2181 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())))),
2182 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2184 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>()), 0)),
2185 k_IS_CONST_PTR = k_IS_POINTER &&
2187 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>()))),
2188 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2190 myDeclval<t_ARGTYPES_01>()))),
2192 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>()))))),
2194 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())))),
2196 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())))),
2197 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2198 (
int)InvokeResult_Index::e_OTHER)
2202 ! k_CANT_DEDUCE_TYPE,
2203 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2205 >::type UnqualTargetType;
2208 InvokeResult_AddCVRef<UnqualTargetType,
2209 static_cast<bool>(k_IS_CONST_TARGET)
2210 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2211 static_cast<bool>(k_IS_VOLATILE_TARGET)
2212 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2213 false>::type CVQualTargetType;
2217 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2219 CVQualTargetType>::type UnqualType;
2222 InvokeResult_AddCVRef<
2224 static_cast<bool>(k_IS_CONST_PTR)
2225 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2226 static_cast<bool>(k_IS_VOLATILE_PTR)
2227 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2228 static_cast<bool>(k_IS_LVALUE)
2229 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2236#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 2
2237template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2238 class t_ARGTYPES_02>
2239struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2241 > : InvokeResult_ImpUtils {
2248 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2249 myDeclval<t_ARGTYPES_02>())))),
2250 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2252 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2253 myDeclval<t_ARGTYPES_02>()), 0)),
2254 k_IS_CONST_PTR = k_IS_POINTER &&
2256 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2257 myDeclval<t_ARGTYPES_02>()))),
2258 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2260 myDeclval<t_ARGTYPES_01>(),
2261 myDeclval<t_ARGTYPES_02>()))),
2263 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2264 myDeclval<t_ARGTYPES_02>()))))),
2266 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2267 myDeclval<t_ARGTYPES_02>())))),
2269 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2270 myDeclval<t_ARGTYPES_02>())))),
2271 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2272 (
int)InvokeResult_Index::e_OTHER)
2276 ! k_CANT_DEDUCE_TYPE,
2277 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2279 >::type UnqualTargetType;
2282 InvokeResult_AddCVRef<UnqualTargetType,
2283 static_cast<bool>(k_IS_CONST_TARGET)
2284 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2285 static_cast<bool>(k_IS_VOLATILE_TARGET)
2286 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2287 false>::type CVQualTargetType;
2291 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2293 CVQualTargetType>::type UnqualType;
2296 InvokeResult_AddCVRef<
2298 static_cast<bool>(k_IS_CONST_PTR)
2299 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2300 static_cast<bool>(k_IS_VOLATILE_PTR)
2301 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2302 static_cast<bool>(k_IS_LVALUE)
2303 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2310#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 3
2311template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2312 class t_ARGTYPES_02,
2313 class t_ARGTYPES_03>
2314struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2317 > : InvokeResult_ImpUtils {
2324 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2325 myDeclval<t_ARGTYPES_02>(),
2326 myDeclval<t_ARGTYPES_03>())))),
2327 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2329 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2330 myDeclval<t_ARGTYPES_02>(),
2331 myDeclval<t_ARGTYPES_03>()), 0)),
2332 k_IS_CONST_PTR = k_IS_POINTER &&
2334 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2335 myDeclval<t_ARGTYPES_02>(),
2336 myDeclval<t_ARGTYPES_03>()))),
2337 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2339 myDeclval<t_ARGTYPES_01>(),
2340 myDeclval<t_ARGTYPES_02>(),
2341 myDeclval<t_ARGTYPES_03>()))),
2343 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2344 myDeclval<t_ARGTYPES_02>(),
2345 myDeclval<t_ARGTYPES_03>()))))),
2347 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2348 myDeclval<t_ARGTYPES_02>(),
2349 myDeclval<t_ARGTYPES_03>())))),
2351 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2352 myDeclval<t_ARGTYPES_02>(),
2353 myDeclval<t_ARGTYPES_03>())))),
2354 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2355 (
int)InvokeResult_Index::e_OTHER)
2359 ! k_CANT_DEDUCE_TYPE,
2360 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2362 >::type UnqualTargetType;
2365 InvokeResult_AddCVRef<UnqualTargetType,
2366 static_cast<bool>(k_IS_CONST_TARGET)
2367 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2368 static_cast<bool>(k_IS_VOLATILE_TARGET)
2369 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2370 false>::type CVQualTargetType;
2374 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2376 CVQualTargetType>::type UnqualType;
2379 InvokeResult_AddCVRef<
2381 static_cast<bool>(k_IS_CONST_PTR)
2382 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2383 static_cast<bool>(k_IS_VOLATILE_PTR)
2384 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2385 static_cast<bool>(k_IS_LVALUE)
2386 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2393#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 4
2394template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2395 class t_ARGTYPES_02,
2396 class t_ARGTYPES_03,
2397 class t_ARGTYPES_04>
2398struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2402 > : InvokeResult_ImpUtils {
2409 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2410 myDeclval<t_ARGTYPES_02>(),
2411 myDeclval<t_ARGTYPES_03>(),
2412 myDeclval<t_ARGTYPES_04>())))),
2413 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2415 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2416 myDeclval<t_ARGTYPES_02>(),
2417 myDeclval<t_ARGTYPES_03>(),
2418 myDeclval<t_ARGTYPES_04>()), 0)),
2419 k_IS_CONST_PTR = k_IS_POINTER &&
2421 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2422 myDeclval<t_ARGTYPES_02>(),
2423 myDeclval<t_ARGTYPES_03>(),
2424 myDeclval<t_ARGTYPES_04>()))),
2425 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2427 myDeclval<t_ARGTYPES_01>(),
2428 myDeclval<t_ARGTYPES_02>(),
2429 myDeclval<t_ARGTYPES_03>(),
2430 myDeclval<t_ARGTYPES_04>()))),
2432 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2433 myDeclval<t_ARGTYPES_02>(),
2434 myDeclval<t_ARGTYPES_03>(),
2435 myDeclval<t_ARGTYPES_04>()))))),
2437 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2438 myDeclval<t_ARGTYPES_02>(),
2439 myDeclval<t_ARGTYPES_03>(),
2440 myDeclval<t_ARGTYPES_04>())))),
2442 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2443 myDeclval<t_ARGTYPES_02>(),
2444 myDeclval<t_ARGTYPES_03>(),
2445 myDeclval<t_ARGTYPES_04>())))),
2446 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2447 (
int)InvokeResult_Index::e_OTHER)
2451 ! k_CANT_DEDUCE_TYPE,
2452 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2454 >::type UnqualTargetType;
2457 InvokeResult_AddCVRef<UnqualTargetType,
2458 static_cast<bool>(k_IS_CONST_TARGET)
2459 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2460 static_cast<bool>(k_IS_VOLATILE_TARGET)
2461 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2462 false>::type CVQualTargetType;
2466 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2468 CVQualTargetType>::type UnqualType;
2471 InvokeResult_AddCVRef<
2473 static_cast<bool>(k_IS_CONST_PTR)
2474 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2475 static_cast<bool>(k_IS_VOLATILE_PTR)
2476 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2477 static_cast<bool>(k_IS_LVALUE)
2478 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2485#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 5
2486template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2487 class t_ARGTYPES_02,
2488 class t_ARGTYPES_03,
2489 class t_ARGTYPES_04,
2490 class t_ARGTYPES_05>
2491struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2496 > : InvokeResult_ImpUtils {
2503 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2504 myDeclval<t_ARGTYPES_02>(),
2505 myDeclval<t_ARGTYPES_03>(),
2506 myDeclval<t_ARGTYPES_04>(),
2507 myDeclval<t_ARGTYPES_05>())))),
2508 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2510 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2511 myDeclval<t_ARGTYPES_02>(),
2512 myDeclval<t_ARGTYPES_03>(),
2513 myDeclval<t_ARGTYPES_04>(),
2514 myDeclval<t_ARGTYPES_05>()), 0)),
2515 k_IS_CONST_PTR = k_IS_POINTER &&
2517 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2518 myDeclval<t_ARGTYPES_02>(),
2519 myDeclval<t_ARGTYPES_03>(),
2520 myDeclval<t_ARGTYPES_04>(),
2521 myDeclval<t_ARGTYPES_05>()))),
2522 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2524 myDeclval<t_ARGTYPES_01>(),
2525 myDeclval<t_ARGTYPES_02>(),
2526 myDeclval<t_ARGTYPES_03>(),
2527 myDeclval<t_ARGTYPES_04>(),
2528 myDeclval<t_ARGTYPES_05>()))),
2530 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2531 myDeclval<t_ARGTYPES_02>(),
2532 myDeclval<t_ARGTYPES_03>(),
2533 myDeclval<t_ARGTYPES_04>(),
2534 myDeclval<t_ARGTYPES_05>()))))),
2536 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2537 myDeclval<t_ARGTYPES_02>(),
2538 myDeclval<t_ARGTYPES_03>(),
2539 myDeclval<t_ARGTYPES_04>(),
2540 myDeclval<t_ARGTYPES_05>())))),
2542 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2543 myDeclval<t_ARGTYPES_02>(),
2544 myDeclval<t_ARGTYPES_03>(),
2545 myDeclval<t_ARGTYPES_04>(),
2546 myDeclval<t_ARGTYPES_05>())))),
2547 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2548 (
int)InvokeResult_Index::e_OTHER)
2552 ! k_CANT_DEDUCE_TYPE,
2553 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2555 >::type UnqualTargetType;
2558 InvokeResult_AddCVRef<UnqualTargetType,
2559 static_cast<bool>(k_IS_CONST_TARGET)
2560 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2561 static_cast<bool>(k_IS_VOLATILE_TARGET)
2562 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2563 false>::type CVQualTargetType;
2567 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2569 CVQualTargetType>::type UnqualType;
2572 InvokeResult_AddCVRef<
2574 static_cast<bool>(k_IS_CONST_PTR)
2575 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2576 static_cast<bool>(k_IS_VOLATILE_PTR)
2577 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2578 static_cast<bool>(k_IS_LVALUE)
2579 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2586#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 6
2587template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2588 class t_ARGTYPES_02,
2589 class t_ARGTYPES_03,
2590 class t_ARGTYPES_04,
2591 class t_ARGTYPES_05,
2592 class t_ARGTYPES_06>
2593struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2599 > : InvokeResult_ImpUtils {
2606 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2607 myDeclval<t_ARGTYPES_02>(),
2608 myDeclval<t_ARGTYPES_03>(),
2609 myDeclval<t_ARGTYPES_04>(),
2610 myDeclval<t_ARGTYPES_05>(),
2611 myDeclval<t_ARGTYPES_06>())))),
2612 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2614 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2615 myDeclval<t_ARGTYPES_02>(),
2616 myDeclval<t_ARGTYPES_03>(),
2617 myDeclval<t_ARGTYPES_04>(),
2618 myDeclval<t_ARGTYPES_05>(),
2619 myDeclval<t_ARGTYPES_06>()), 0)),
2620 k_IS_CONST_PTR = k_IS_POINTER &&
2622 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2623 myDeclval<t_ARGTYPES_02>(),
2624 myDeclval<t_ARGTYPES_03>(),
2625 myDeclval<t_ARGTYPES_04>(),
2626 myDeclval<t_ARGTYPES_05>(),
2627 myDeclval<t_ARGTYPES_06>()))),
2628 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2630 myDeclval<t_ARGTYPES_01>(),
2631 myDeclval<t_ARGTYPES_02>(),
2632 myDeclval<t_ARGTYPES_03>(),
2633 myDeclval<t_ARGTYPES_04>(),
2634 myDeclval<t_ARGTYPES_05>(),
2635 myDeclval<t_ARGTYPES_06>()))),
2637 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2638 myDeclval<t_ARGTYPES_02>(),
2639 myDeclval<t_ARGTYPES_03>(),
2640 myDeclval<t_ARGTYPES_04>(),
2641 myDeclval<t_ARGTYPES_05>(),
2642 myDeclval<t_ARGTYPES_06>()))))),
2644 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2645 myDeclval<t_ARGTYPES_02>(),
2646 myDeclval<t_ARGTYPES_03>(),
2647 myDeclval<t_ARGTYPES_04>(),
2648 myDeclval<t_ARGTYPES_05>(),
2649 myDeclval<t_ARGTYPES_06>())))),
2651 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2652 myDeclval<t_ARGTYPES_02>(),
2653 myDeclval<t_ARGTYPES_03>(),
2654 myDeclval<t_ARGTYPES_04>(),
2655 myDeclval<t_ARGTYPES_05>(),
2656 myDeclval<t_ARGTYPES_06>())))),
2657 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2658 (
int)InvokeResult_Index::e_OTHER)
2662 ! k_CANT_DEDUCE_TYPE,
2663 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2665 >::type UnqualTargetType;
2668 InvokeResult_AddCVRef<UnqualTargetType,
2669 static_cast<bool>(k_IS_CONST_TARGET)
2670 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2671 static_cast<bool>(k_IS_VOLATILE_TARGET)
2672 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2673 false>::type CVQualTargetType;
2677 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2679 CVQualTargetType>::type UnqualType;
2682 InvokeResult_AddCVRef<
2684 static_cast<bool>(k_IS_CONST_PTR)
2685 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2686 static_cast<bool>(k_IS_VOLATILE_PTR)
2687 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2688 static_cast<bool>(k_IS_LVALUE)
2689 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2696#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 7
2697template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2698 class t_ARGTYPES_02,
2699 class t_ARGTYPES_03,
2700 class t_ARGTYPES_04,
2701 class t_ARGTYPES_05,
2702 class t_ARGTYPES_06,
2703 class t_ARGTYPES_07>
2704struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2711 > : InvokeResult_ImpUtils {
2718 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2719 myDeclval<t_ARGTYPES_02>(),
2720 myDeclval<t_ARGTYPES_03>(),
2721 myDeclval<t_ARGTYPES_04>(),
2722 myDeclval<t_ARGTYPES_05>(),
2723 myDeclval<t_ARGTYPES_06>(),
2724 myDeclval<t_ARGTYPES_07>())))),
2725 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2727 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2728 myDeclval<t_ARGTYPES_02>(),
2729 myDeclval<t_ARGTYPES_03>(),
2730 myDeclval<t_ARGTYPES_04>(),
2731 myDeclval<t_ARGTYPES_05>(),
2732 myDeclval<t_ARGTYPES_06>(),
2733 myDeclval<t_ARGTYPES_07>()), 0)),
2734 k_IS_CONST_PTR = k_IS_POINTER &&
2736 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2737 myDeclval<t_ARGTYPES_02>(),
2738 myDeclval<t_ARGTYPES_03>(),
2739 myDeclval<t_ARGTYPES_04>(),
2740 myDeclval<t_ARGTYPES_05>(),
2741 myDeclval<t_ARGTYPES_06>(),
2742 myDeclval<t_ARGTYPES_07>()))),
2743 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2745 myDeclval<t_ARGTYPES_01>(),
2746 myDeclval<t_ARGTYPES_02>(),
2747 myDeclval<t_ARGTYPES_03>(),
2748 myDeclval<t_ARGTYPES_04>(),
2749 myDeclval<t_ARGTYPES_05>(),
2750 myDeclval<t_ARGTYPES_06>(),
2751 myDeclval<t_ARGTYPES_07>()))),
2753 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2754 myDeclval<t_ARGTYPES_02>(),
2755 myDeclval<t_ARGTYPES_03>(),
2756 myDeclval<t_ARGTYPES_04>(),
2757 myDeclval<t_ARGTYPES_05>(),
2758 myDeclval<t_ARGTYPES_06>(),
2759 myDeclval<t_ARGTYPES_07>()))))),
2761 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2762 myDeclval<t_ARGTYPES_02>(),
2763 myDeclval<t_ARGTYPES_03>(),
2764 myDeclval<t_ARGTYPES_04>(),
2765 myDeclval<t_ARGTYPES_05>(),
2766 myDeclval<t_ARGTYPES_06>(),
2767 myDeclval<t_ARGTYPES_07>())))),
2769 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2770 myDeclval<t_ARGTYPES_02>(),
2771 myDeclval<t_ARGTYPES_03>(),
2772 myDeclval<t_ARGTYPES_04>(),
2773 myDeclval<t_ARGTYPES_05>(),
2774 myDeclval<t_ARGTYPES_06>(),
2775 myDeclval<t_ARGTYPES_07>())))),
2776 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2777 (
int)InvokeResult_Index::e_OTHER)
2781 ! k_CANT_DEDUCE_TYPE,
2782 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2784 >::type UnqualTargetType;
2787 InvokeResult_AddCVRef<UnqualTargetType,
2788 static_cast<bool>(k_IS_CONST_TARGET)
2789 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2790 static_cast<bool>(k_IS_VOLATILE_TARGET)
2791 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2792 false>::type CVQualTargetType;
2796 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2798 CVQualTargetType>::type UnqualType;
2801 InvokeResult_AddCVRef<
2803 static_cast<bool>(k_IS_CONST_PTR)
2804 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2805 static_cast<bool>(k_IS_VOLATILE_PTR)
2806 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2807 static_cast<bool>(k_IS_LVALUE)
2808 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2815#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 8
2816template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2817 class t_ARGTYPES_02,
2818 class t_ARGTYPES_03,
2819 class t_ARGTYPES_04,
2820 class t_ARGTYPES_05,
2821 class t_ARGTYPES_06,
2822 class t_ARGTYPES_07,
2823 class t_ARGTYPES_08>
2824struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2832 > : InvokeResult_ImpUtils {
2839 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2840 myDeclval<t_ARGTYPES_02>(),
2841 myDeclval<t_ARGTYPES_03>(),
2842 myDeclval<t_ARGTYPES_04>(),
2843 myDeclval<t_ARGTYPES_05>(),
2844 myDeclval<t_ARGTYPES_06>(),
2845 myDeclval<t_ARGTYPES_07>(),
2846 myDeclval<t_ARGTYPES_08>())))),
2847 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2849 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2850 myDeclval<t_ARGTYPES_02>(),
2851 myDeclval<t_ARGTYPES_03>(),
2852 myDeclval<t_ARGTYPES_04>(),
2853 myDeclval<t_ARGTYPES_05>(),
2854 myDeclval<t_ARGTYPES_06>(),
2855 myDeclval<t_ARGTYPES_07>(),
2856 myDeclval<t_ARGTYPES_08>()), 0)),
2857 k_IS_CONST_PTR = k_IS_POINTER &&
2859 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2860 myDeclval<t_ARGTYPES_02>(),
2861 myDeclval<t_ARGTYPES_03>(),
2862 myDeclval<t_ARGTYPES_04>(),
2863 myDeclval<t_ARGTYPES_05>(),
2864 myDeclval<t_ARGTYPES_06>(),
2865 myDeclval<t_ARGTYPES_07>(),
2866 myDeclval<t_ARGTYPES_08>()))),
2867 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2869 myDeclval<t_ARGTYPES_01>(),
2870 myDeclval<t_ARGTYPES_02>(),
2871 myDeclval<t_ARGTYPES_03>(),
2872 myDeclval<t_ARGTYPES_04>(),
2873 myDeclval<t_ARGTYPES_05>(),
2874 myDeclval<t_ARGTYPES_06>(),
2875 myDeclval<t_ARGTYPES_07>(),
2876 myDeclval<t_ARGTYPES_08>()))),
2878 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2879 myDeclval<t_ARGTYPES_02>(),
2880 myDeclval<t_ARGTYPES_03>(),
2881 myDeclval<t_ARGTYPES_04>(),
2882 myDeclval<t_ARGTYPES_05>(),
2883 myDeclval<t_ARGTYPES_06>(),
2884 myDeclval<t_ARGTYPES_07>(),
2885 myDeclval<t_ARGTYPES_08>()))))),
2887 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2888 myDeclval<t_ARGTYPES_02>(),
2889 myDeclval<t_ARGTYPES_03>(),
2890 myDeclval<t_ARGTYPES_04>(),
2891 myDeclval<t_ARGTYPES_05>(),
2892 myDeclval<t_ARGTYPES_06>(),
2893 myDeclval<t_ARGTYPES_07>(),
2894 myDeclval<t_ARGTYPES_08>())))),
2896 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2897 myDeclval<t_ARGTYPES_02>(),
2898 myDeclval<t_ARGTYPES_03>(),
2899 myDeclval<t_ARGTYPES_04>(),
2900 myDeclval<t_ARGTYPES_05>(),
2901 myDeclval<t_ARGTYPES_06>(),
2902 myDeclval<t_ARGTYPES_07>(),
2903 myDeclval<t_ARGTYPES_08>())))),
2904 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2905 (
int)InvokeResult_Index::e_OTHER)
2909 ! k_CANT_DEDUCE_TYPE,
2910 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2912 >::type UnqualTargetType;
2915 InvokeResult_AddCVRef<UnqualTargetType,
2916 static_cast<bool>(k_IS_CONST_TARGET)
2917 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2918 static_cast<bool>(k_IS_VOLATILE_TARGET)
2919 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2920 false>::type CVQualTargetType;
2924 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2926 CVQualTargetType>::type UnqualType;
2929 InvokeResult_AddCVRef<
2931 static_cast<bool>(k_IS_CONST_PTR)
2932 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2933 static_cast<bool>(k_IS_VOLATILE_PTR)
2934 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2935 static_cast<bool>(k_IS_LVALUE)
2936 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2943#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 9
2944template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2945 class t_ARGTYPES_02,
2946 class t_ARGTYPES_03,
2947 class t_ARGTYPES_04,
2948 class t_ARGTYPES_05,
2949 class t_ARGTYPES_06,
2950 class t_ARGTYPES_07,
2951 class t_ARGTYPES_08,
2952 class t_ARGTYPES_09>
2953struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2962 > : InvokeResult_ImpUtils {
2969 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2970 myDeclval<t_ARGTYPES_02>(),
2971 myDeclval<t_ARGTYPES_03>(),
2972 myDeclval<t_ARGTYPES_04>(),
2973 myDeclval<t_ARGTYPES_05>(),
2974 myDeclval<t_ARGTYPES_06>(),
2975 myDeclval<t_ARGTYPES_07>(),
2976 myDeclval<t_ARGTYPES_08>(),
2977 myDeclval<t_ARGTYPES_09>())))),
2978 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2980 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2981 myDeclval<t_ARGTYPES_02>(),
2982 myDeclval<t_ARGTYPES_03>(),
2983 myDeclval<t_ARGTYPES_04>(),
2984 myDeclval<t_ARGTYPES_05>(),
2985 myDeclval<t_ARGTYPES_06>(),
2986 myDeclval<t_ARGTYPES_07>(),
2987 myDeclval<t_ARGTYPES_08>(),
2988 myDeclval<t_ARGTYPES_09>()), 0)),
2989 k_IS_CONST_PTR = k_IS_POINTER &&
2991 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2992 myDeclval<t_ARGTYPES_02>(),
2993 myDeclval<t_ARGTYPES_03>(),
2994 myDeclval<t_ARGTYPES_04>(),
2995 myDeclval<t_ARGTYPES_05>(),
2996 myDeclval<t_ARGTYPES_06>(),
2997 myDeclval<t_ARGTYPES_07>(),
2998 myDeclval<t_ARGTYPES_08>(),
2999 myDeclval<t_ARGTYPES_09>()))),
3000 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3002 myDeclval<t_ARGTYPES_01>(),
3003 myDeclval<t_ARGTYPES_02>(),
3004 myDeclval<t_ARGTYPES_03>(),
3005 myDeclval<t_ARGTYPES_04>(),
3006 myDeclval<t_ARGTYPES_05>(),
3007 myDeclval<t_ARGTYPES_06>(),
3008 myDeclval<t_ARGTYPES_07>(),
3009 myDeclval<t_ARGTYPES_08>(),
3010 myDeclval<t_ARGTYPES_09>()))),
3012 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3013 myDeclval<t_ARGTYPES_02>(),
3014 myDeclval<t_ARGTYPES_03>(),
3015 myDeclval<t_ARGTYPES_04>(),
3016 myDeclval<t_ARGTYPES_05>(),
3017 myDeclval<t_ARGTYPES_06>(),
3018 myDeclval<t_ARGTYPES_07>(),
3019 myDeclval<t_ARGTYPES_08>(),
3020 myDeclval<t_ARGTYPES_09>()))))),
3022 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3023 myDeclval<t_ARGTYPES_02>(),
3024 myDeclval<t_ARGTYPES_03>(),
3025 myDeclval<t_ARGTYPES_04>(),
3026 myDeclval<t_ARGTYPES_05>(),
3027 myDeclval<t_ARGTYPES_06>(),
3028 myDeclval<t_ARGTYPES_07>(),
3029 myDeclval<t_ARGTYPES_08>(),
3030 myDeclval<t_ARGTYPES_09>())))),
3032 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3033 myDeclval<t_ARGTYPES_02>(),
3034 myDeclval<t_ARGTYPES_03>(),
3035 myDeclval<t_ARGTYPES_04>(),
3036 myDeclval<t_ARGTYPES_05>(),
3037 myDeclval<t_ARGTYPES_06>(),
3038 myDeclval<t_ARGTYPES_07>(),
3039 myDeclval<t_ARGTYPES_08>(),
3040 myDeclval<t_ARGTYPES_09>())))),
3041 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3042 (
int)InvokeResult_Index::e_OTHER)
3046 ! k_CANT_DEDUCE_TYPE,
3047 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3049 >::type UnqualTargetType;
3052 InvokeResult_AddCVRef<UnqualTargetType,
3053 static_cast<bool>(k_IS_CONST_TARGET)
3054 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3055 static_cast<bool>(k_IS_VOLATILE_TARGET)
3056 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3057 false>::type CVQualTargetType;
3061 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3063 CVQualTargetType>::type UnqualType;
3066 InvokeResult_AddCVRef<
3068 static_cast<bool>(k_IS_CONST_PTR)
3069 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3070 static_cast<bool>(k_IS_VOLATILE_PTR)
3071 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3072 static_cast<bool>(k_IS_LVALUE)
3073 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3080#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 10
3081template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
3082 class t_ARGTYPES_02,
3083 class t_ARGTYPES_03,
3084 class t_ARGTYPES_04,
3085 class t_ARGTYPES_05,
3086 class t_ARGTYPES_06,
3087 class t_ARGTYPES_07,
3088 class t_ARGTYPES_08,
3089 class t_ARGTYPES_09,
3090 class t_ARGTYPES_10>
3091struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
3101 > : InvokeResult_ImpUtils {
3108 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3109 myDeclval<t_ARGTYPES_02>(),
3110 myDeclval<t_ARGTYPES_03>(),
3111 myDeclval<t_ARGTYPES_04>(),
3112 myDeclval<t_ARGTYPES_05>(),
3113 myDeclval<t_ARGTYPES_06>(),
3114 myDeclval<t_ARGTYPES_07>(),
3115 myDeclval<t_ARGTYPES_08>(),
3116 myDeclval<t_ARGTYPES_09>(),
3117 myDeclval<t_ARGTYPES_10>())))),
3118 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
3120 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3121 myDeclval<t_ARGTYPES_02>(),
3122 myDeclval<t_ARGTYPES_03>(),
3123 myDeclval<t_ARGTYPES_04>(),
3124 myDeclval<t_ARGTYPES_05>(),
3125 myDeclval<t_ARGTYPES_06>(),
3126 myDeclval<t_ARGTYPES_07>(),
3127 myDeclval<t_ARGTYPES_08>(),
3128 myDeclval<t_ARGTYPES_09>(),
3129 myDeclval<t_ARGTYPES_10>()), 0)),
3130 k_IS_CONST_PTR = k_IS_POINTER &&
3132 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3133 myDeclval<t_ARGTYPES_02>(),
3134 myDeclval<t_ARGTYPES_03>(),
3135 myDeclval<t_ARGTYPES_04>(),
3136 myDeclval<t_ARGTYPES_05>(),
3137 myDeclval<t_ARGTYPES_06>(),
3138 myDeclval<t_ARGTYPES_07>(),
3139 myDeclval<t_ARGTYPES_08>(),
3140 myDeclval<t_ARGTYPES_09>(),
3141 myDeclval<t_ARGTYPES_10>()))),
3142 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3144 myDeclval<t_ARGTYPES_01>(),
3145 myDeclval<t_ARGTYPES_02>(),
3146 myDeclval<t_ARGTYPES_03>(),
3147 myDeclval<t_ARGTYPES_04>(),
3148 myDeclval<t_ARGTYPES_05>(),
3149 myDeclval<t_ARGTYPES_06>(),
3150 myDeclval<t_ARGTYPES_07>(),
3151 myDeclval<t_ARGTYPES_08>(),
3152 myDeclval<t_ARGTYPES_09>(),
3153 myDeclval<t_ARGTYPES_10>()))),
3155 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3156 myDeclval<t_ARGTYPES_02>(),
3157 myDeclval<t_ARGTYPES_03>(),
3158 myDeclval<t_ARGTYPES_04>(),
3159 myDeclval<t_ARGTYPES_05>(),
3160 myDeclval<t_ARGTYPES_06>(),
3161 myDeclval<t_ARGTYPES_07>(),
3162 myDeclval<t_ARGTYPES_08>(),
3163 myDeclval<t_ARGTYPES_09>(),
3164 myDeclval<t_ARGTYPES_10>()))))),
3166 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3167 myDeclval<t_ARGTYPES_02>(),
3168 myDeclval<t_ARGTYPES_03>(),
3169 myDeclval<t_ARGTYPES_04>(),
3170 myDeclval<t_ARGTYPES_05>(),
3171 myDeclval<t_ARGTYPES_06>(),
3172 myDeclval<t_ARGTYPES_07>(),
3173 myDeclval<t_ARGTYPES_08>(),
3174 myDeclval<t_ARGTYPES_09>(),
3175 myDeclval<t_ARGTYPES_10>())))),
3177 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3178 myDeclval<t_ARGTYPES_02>(),
3179 myDeclval<t_ARGTYPES_03>(),
3180 myDeclval<t_ARGTYPES_04>(),
3181 myDeclval<t_ARGTYPES_05>(),
3182 myDeclval<t_ARGTYPES_06>(),
3183 myDeclval<t_ARGTYPES_07>(),
3184 myDeclval<t_ARGTYPES_08>(),
3185 myDeclval<t_ARGTYPES_09>(),
3186 myDeclval<t_ARGTYPES_10>())))),
3187 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3188 (
int)InvokeResult_Index::e_OTHER)
3192 ! k_CANT_DEDUCE_TYPE,
3193 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3195 >::type UnqualTargetType;
3198 InvokeResult_AddCVRef<UnqualTargetType,
3199 static_cast<bool>(k_IS_CONST_TARGET)
3200 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3201 static_cast<bool>(k_IS_VOLATILE_TARGET)
3202 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3203 false>::type CVQualTargetType;
3207 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3209 CVQualTargetType>::type UnqualType;
3212 InvokeResult_AddCVRef<
3214 static_cast<bool>(k_IS_CONST_PTR)
3215 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3216 static_cast<bool>(k_IS_VOLATILE_PTR)
3217 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3218 static_cast<bool>(k_IS_LVALUE)
3219 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3226#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 11
3227template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
3228 class t_ARGTYPES_02,
3229 class t_ARGTYPES_03,
3230 class t_ARGTYPES_04,
3231 class t_ARGTYPES_05,
3232 class t_ARGTYPES_06,
3233 class t_ARGTYPES_07,
3234 class t_ARGTYPES_08,
3235 class t_ARGTYPES_09,
3236 class t_ARGTYPES_10,
3237 class t_ARGTYPES_11>
3238struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
3249 > : InvokeResult_ImpUtils {
3256 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3257 myDeclval<t_ARGTYPES_02>(),
3258 myDeclval<t_ARGTYPES_03>(),
3259 myDeclval<t_ARGTYPES_04>(),
3260 myDeclval<t_ARGTYPES_05>(),
3261 myDeclval<t_ARGTYPES_06>(),
3262 myDeclval<t_ARGTYPES_07>(),
3263 myDeclval<t_ARGTYPES_08>(),
3264 myDeclval<t_ARGTYPES_09>(),
3265 myDeclval<t_ARGTYPES_10>(),
3266 myDeclval<t_ARGTYPES_11>())))),
3267 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
3269 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3270 myDeclval<t_ARGTYPES_02>(),
3271 myDeclval<t_ARGTYPES_03>(),
3272 myDeclval<t_ARGTYPES_04>(),
3273 myDeclval<t_ARGTYPES_05>(),
3274 myDeclval<t_ARGTYPES_06>(),
3275 myDeclval<t_ARGTYPES_07>(),
3276 myDeclval<t_ARGTYPES_08>(),
3277 myDeclval<t_ARGTYPES_09>(),
3278 myDeclval<t_ARGTYPES_10>(),
3279 myDeclval<t_ARGTYPES_11>()), 0)),
3280 k_IS_CONST_PTR = k_IS_POINTER &&
3282 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3283 myDeclval<t_ARGTYPES_02>(),
3284 myDeclval<t_ARGTYPES_03>(),
3285 myDeclval<t_ARGTYPES_04>(),
3286 myDeclval<t_ARGTYPES_05>(),
3287 myDeclval<t_ARGTYPES_06>(),
3288 myDeclval<t_ARGTYPES_07>(),
3289 myDeclval<t_ARGTYPES_08>(),
3290 myDeclval<t_ARGTYPES_09>(),
3291 myDeclval<t_ARGTYPES_10>(),
3292 myDeclval<t_ARGTYPES_11>()))),
3293 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3295 myDeclval<t_ARGTYPES_01>(),
3296 myDeclval<t_ARGTYPES_02>(),
3297 myDeclval<t_ARGTYPES_03>(),
3298 myDeclval<t_ARGTYPES_04>(),
3299 myDeclval<t_ARGTYPES_05>(),
3300 myDeclval<t_ARGTYPES_06>(),
3301 myDeclval<t_ARGTYPES_07>(),
3302 myDeclval<t_ARGTYPES_08>(),
3303 myDeclval<t_ARGTYPES_09>(),
3304 myDeclval<t_ARGTYPES_10>(),
3305 myDeclval<t_ARGTYPES_11>()))),
3307 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3308 myDeclval<t_ARGTYPES_02>(),
3309 myDeclval<t_ARGTYPES_03>(),
3310 myDeclval<t_ARGTYPES_04>(),
3311 myDeclval<t_ARGTYPES_05>(),
3312 myDeclval<t_ARGTYPES_06>(),
3313 myDeclval<t_ARGTYPES_07>(),
3314 myDeclval<t_ARGTYPES_08>(),
3315 myDeclval<t_ARGTYPES_09>(),
3316 myDeclval<t_ARGTYPES_10>(),
3317 myDeclval<t_ARGTYPES_11>()))))),
3319 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3320 myDeclval<t_ARGTYPES_02>(),
3321 myDeclval<t_ARGTYPES_03>(),
3322 myDeclval<t_ARGTYPES_04>(),
3323 myDeclval<t_ARGTYPES_05>(),
3324 myDeclval<t_ARGTYPES_06>(),
3325 myDeclval<t_ARGTYPES_07>(),
3326 myDeclval<t_ARGTYPES_08>(),
3327 myDeclval<t_ARGTYPES_09>(),
3328 myDeclval<t_ARGTYPES_10>(),
3329 myDeclval<t_ARGTYPES_11>())))),
3331 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3332 myDeclval<t_ARGTYPES_02>(),
3333 myDeclval<t_ARGTYPES_03>(),
3334 myDeclval<t_ARGTYPES_04>(),
3335 myDeclval<t_ARGTYPES_05>(),
3336 myDeclval<t_ARGTYPES_06>(),
3337 myDeclval<t_ARGTYPES_07>(),
3338 myDeclval<t_ARGTYPES_08>(),
3339 myDeclval<t_ARGTYPES_09>(),
3340 myDeclval<t_ARGTYPES_10>(),
3341 myDeclval<t_ARGTYPES_11>())))),
3342 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3343 (
int)InvokeResult_Index::e_OTHER)
3347 ! k_CANT_DEDUCE_TYPE,
3348 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3350 >::type UnqualTargetType;
3353 InvokeResult_AddCVRef<UnqualTargetType,
3354 static_cast<bool>(k_IS_CONST_TARGET)
3355 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3356 static_cast<bool>(k_IS_VOLATILE_TARGET)
3357 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3358 false>::type CVQualTargetType;
3362 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3364 CVQualTargetType>::type UnqualType;
3367 InvokeResult_AddCVRef<
3369 static_cast<bool>(k_IS_CONST_PTR)
3370 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3371 static_cast<bool>(k_IS_VOLATILE_PTR)
3372 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3373 static_cast<bool>(k_IS_LVALUE)
3374 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3381#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 12
3382template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
3383 class t_ARGTYPES_02,
3384 class t_ARGTYPES_03,
3385 class t_ARGTYPES_04,
3386 class t_ARGTYPES_05,
3387 class t_ARGTYPES_06,
3388 class t_ARGTYPES_07,
3389 class t_ARGTYPES_08,
3390 class t_ARGTYPES_09,
3391 class t_ARGTYPES_10,
3392 class t_ARGTYPES_11,
3393 class t_ARGTYPES_12>
3394struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
3406 > : InvokeResult_ImpUtils {
3413 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3414 myDeclval<t_ARGTYPES_02>(),
3415 myDeclval<t_ARGTYPES_03>(),
3416 myDeclval<t_ARGTYPES_04>(),
3417 myDeclval<t_ARGTYPES_05>(),
3418 myDeclval<t_ARGTYPES_06>(),
3419 myDeclval<t_ARGTYPES_07>(),
3420 myDeclval<t_ARGTYPES_08>(),
3421 myDeclval<t_ARGTYPES_09>(),
3422 myDeclval<t_ARGTYPES_10>(),
3423 myDeclval<t_ARGTYPES_11>(),
3424 myDeclval<t_ARGTYPES_12>())))),
3425 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
3427 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3428 myDeclval<t_ARGTYPES_02>(),
3429 myDeclval<t_ARGTYPES_03>(),
3430 myDeclval<t_ARGTYPES_04>(),
3431 myDeclval<t_ARGTYPES_05>(),
3432 myDeclval<t_ARGTYPES_06>(),
3433 myDeclval<t_ARGTYPES_07>(),
3434 myDeclval<t_ARGTYPES_08>(),
3435 myDeclval<t_ARGTYPES_09>(),
3436 myDeclval<t_ARGTYPES_10>(),
3437 myDeclval<t_ARGTYPES_11>(),
3438 myDeclval<t_ARGTYPES_12>()), 0)),
3439 k_IS_CONST_PTR = k_IS_POINTER &&
3441 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3442 myDeclval<t_ARGTYPES_02>(),
3443 myDeclval<t_ARGTYPES_03>(),
3444 myDeclval<t_ARGTYPES_04>(),
3445 myDeclval<t_ARGTYPES_05>(),
3446 myDeclval<t_ARGTYPES_06>(),
3447 myDeclval<t_ARGTYPES_07>(),
3448 myDeclval<t_ARGTYPES_08>(),
3449 myDeclval<t_ARGTYPES_09>(),
3450 myDeclval<t_ARGTYPES_10>(),
3451 myDeclval<t_ARGTYPES_11>(),
3452 myDeclval<t_ARGTYPES_12>()))),
3453 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3455 myDeclval<t_ARGTYPES_01>(),
3456 myDeclval<t_ARGTYPES_02>(),
3457 myDeclval<t_ARGTYPES_03>(),
3458 myDeclval<t_ARGTYPES_04>(),
3459 myDeclval<t_ARGTYPES_05>(),
3460 myDeclval<t_ARGTYPES_06>(),
3461 myDeclval<t_ARGTYPES_07>(),
3462 myDeclval<t_ARGTYPES_08>(),
3463 myDeclval<t_ARGTYPES_09>(),
3464 myDeclval<t_ARGTYPES_10>(),
3465 myDeclval<t_ARGTYPES_11>(),
3466 myDeclval<t_ARGTYPES_12>()))),
3468 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3469 myDeclval<t_ARGTYPES_02>(),
3470 myDeclval<t_ARGTYPES_03>(),
3471 myDeclval<t_ARGTYPES_04>(),
3472 myDeclval<t_ARGTYPES_05>(),
3473 myDeclval<t_ARGTYPES_06>(),
3474 myDeclval<t_ARGTYPES_07>(),
3475 myDeclval<t_ARGTYPES_08>(),
3476 myDeclval<t_ARGTYPES_09>(),
3477 myDeclval<t_ARGTYPES_10>(),
3478 myDeclval<t_ARGTYPES_11>(),
3479 myDeclval<t_ARGTYPES_12>()))))),
3481 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3482 myDeclval<t_ARGTYPES_02>(),
3483 myDeclval<t_ARGTYPES_03>(),
3484 myDeclval<t_ARGTYPES_04>(),
3485 myDeclval<t_ARGTYPES_05>(),
3486 myDeclval<t_ARGTYPES_06>(),
3487 myDeclval<t_ARGTYPES_07>(),
3488 myDeclval<t_ARGTYPES_08>(),
3489 myDeclval<t_ARGTYPES_09>(),
3490 myDeclval<t_ARGTYPES_10>(),
3491 myDeclval<t_ARGTYPES_11>(),
3492 myDeclval<t_ARGTYPES_12>())))),
3494 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3495 myDeclval<t_ARGTYPES_02>(),
3496 myDeclval<t_ARGTYPES_03>(),
3497 myDeclval<t_ARGTYPES_04>(),
3498 myDeclval<t_ARGTYPES_05>(),
3499 myDeclval<t_ARGTYPES_06>(),
3500 myDeclval<t_ARGTYPES_07>(),
3501 myDeclval<t_ARGTYPES_08>(),
3502 myDeclval<t_ARGTYPES_09>(),
3503 myDeclval<t_ARGTYPES_10>(),
3504 myDeclval<t_ARGTYPES_11>(),
3505 myDeclval<t_ARGTYPES_12>())))),
3506 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3507 (
int)InvokeResult_Index::e_OTHER)
3511 ! k_CANT_DEDUCE_TYPE,
3512 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3514 >::type UnqualTargetType;
3517 InvokeResult_AddCVRef<UnqualTargetType,
3518 static_cast<bool>(k_IS_CONST_TARGET)
3519 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3520 static_cast<bool>(k_IS_VOLATILE_TARGET)
3521 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3522 false>::type CVQualTargetType;
3526 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3528 CVQualTargetType>::type UnqualType;
3531 InvokeResult_AddCVRef<
3533 static_cast<bool>(k_IS_CONST_PTR)
3534 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3535 static_cast<bool>(k_IS_VOLATILE_PTR)
3536 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3537 static_cast<bool>(k_IS_LVALUE)
3538 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3545#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 13
3546template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
3547 class t_ARGTYPES_02,
3548 class t_ARGTYPES_03,
3549 class t_ARGTYPES_04,
3550 class t_ARGTYPES_05,
3551 class t_ARGTYPES_06,
3552 class t_ARGTYPES_07,
3553 class t_ARGTYPES_08,
3554 class t_ARGTYPES_09,
3555 class t_ARGTYPES_10,
3556 class t_ARGTYPES_11,
3557 class t_ARGTYPES_12,
3558 class t_ARGTYPES_13>
3559struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
3572 > : InvokeResult_ImpUtils {
3579 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3580 myDeclval<t_ARGTYPES_02>(),
3581 myDeclval<t_ARGTYPES_03>(),
3582 myDeclval<t_ARGTYPES_04>(),
3583 myDeclval<t_ARGTYPES_05>(),
3584 myDeclval<t_ARGTYPES_06>(),
3585 myDeclval<t_ARGTYPES_07>(),
3586 myDeclval<t_ARGTYPES_08>(),
3587 myDeclval<t_ARGTYPES_09>(),
3588 myDeclval<t_ARGTYPES_10>(),
3589 myDeclval<t_ARGTYPES_11>(),
3590 myDeclval<t_ARGTYPES_12>(),
3591 myDeclval<t_ARGTYPES_13>())))),
3592 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
3594 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3595 myDeclval<t_ARGTYPES_02>(),
3596 myDeclval<t_ARGTYPES_03>(),
3597 myDeclval<t_ARGTYPES_04>(),
3598 myDeclval<t_ARGTYPES_05>(),
3599 myDeclval<t_ARGTYPES_06>(),
3600 myDeclval<t_ARGTYPES_07>(),
3601 myDeclval<t_ARGTYPES_08>(),
3602 myDeclval<t_ARGTYPES_09>(),
3603 myDeclval<t_ARGTYPES_10>(),
3604 myDeclval<t_ARGTYPES_11>(),
3605 myDeclval<t_ARGTYPES_12>(),
3606 myDeclval<t_ARGTYPES_13>()), 0)),
3607 k_IS_CONST_PTR = k_IS_POINTER &&
3609 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3610 myDeclval<t_ARGTYPES_02>(),
3611 myDeclval<t_ARGTYPES_03>(),
3612 myDeclval<t_ARGTYPES_04>(),
3613 myDeclval<t_ARGTYPES_05>(),
3614 myDeclval<t_ARGTYPES_06>(),
3615 myDeclval<t_ARGTYPES_07>(),
3616 myDeclval<t_ARGTYPES_08>(),
3617 myDeclval<t_ARGTYPES_09>(),
3618 myDeclval<t_ARGTYPES_10>(),
3619 myDeclval<t_ARGTYPES_11>(),
3620 myDeclval<t_ARGTYPES_12>(),
3621 myDeclval<t_ARGTYPES_13>()))),
3622 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3624 myDeclval<t_ARGTYPES_01>(),
3625 myDeclval<t_ARGTYPES_02>(),
3626 myDeclval<t_ARGTYPES_03>(),
3627 myDeclval<t_ARGTYPES_04>(),
3628 myDeclval<t_ARGTYPES_05>(),
3629 myDeclval<t_ARGTYPES_06>(),
3630 myDeclval<t_ARGTYPES_07>(),
3631 myDeclval<t_ARGTYPES_08>(),
3632 myDeclval<t_ARGTYPES_09>(),
3633 myDeclval<t_ARGTYPES_10>(),
3634 myDeclval<t_ARGTYPES_11>(),
3635 myDeclval<t_ARGTYPES_12>(),
3636 myDeclval<t_ARGTYPES_13>()))),
3638 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3639 myDeclval<t_ARGTYPES_02>(),
3640 myDeclval<t_ARGTYPES_03>(),
3641 myDeclval<t_ARGTYPES_04>(),
3642 myDeclval<t_ARGTYPES_05>(),
3643 myDeclval<t_ARGTYPES_06>(),
3644 myDeclval<t_ARGTYPES_07>(),
3645 myDeclval<t_ARGTYPES_08>(),
3646 myDeclval<t_ARGTYPES_09>(),
3647 myDeclval<t_ARGTYPES_10>(),
3648 myDeclval<t_ARGTYPES_11>(),
3649 myDeclval<t_ARGTYPES_12>(),
3650 myDeclval<t_ARGTYPES_13>()))))),
3652 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3653 myDeclval<t_ARGTYPES_02>(),
3654 myDeclval<t_ARGTYPES_03>(),
3655 myDeclval<t_ARGTYPES_04>(),
3656 myDeclval<t_ARGTYPES_05>(),
3657 myDeclval<t_ARGTYPES_06>(),
3658 myDeclval<t_ARGTYPES_07>(),
3659 myDeclval<t_ARGTYPES_08>(),
3660 myDeclval<t_ARGTYPES_09>(),
3661 myDeclval<t_ARGTYPES_10>(),
3662 myDeclval<t_ARGTYPES_11>(),
3663 myDeclval<t_ARGTYPES_12>(),
3664 myDeclval<t_ARGTYPES_13>())))),
3666 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3667 myDeclval<t_ARGTYPES_02>(),
3668 myDeclval<t_ARGTYPES_03>(),
3669 myDeclval<t_ARGTYPES_04>(),
3670 myDeclval<t_ARGTYPES_05>(),
3671 myDeclval<t_ARGTYPES_06>(),
3672 myDeclval<t_ARGTYPES_07>(),
3673 myDeclval<t_ARGTYPES_08>(),
3674 myDeclval<t_ARGTYPES_09>(),
3675 myDeclval<t_ARGTYPES_10>(),
3676 myDeclval<t_ARGTYPES_11>(),
3677 myDeclval<t_ARGTYPES_12>(),
3678 myDeclval<t_ARGTYPES_13>())))),
3679 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3680 (
int)InvokeResult_Index::e_OTHER)
3684 ! k_CANT_DEDUCE_TYPE,
3685 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3687 >::type UnqualTargetType;
3690 InvokeResult_AddCVRef<UnqualTargetType,
3691 static_cast<bool>(k_IS_CONST_TARGET)
3692 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3693 static_cast<bool>(k_IS_VOLATILE_TARGET)
3694 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3695 false>::type CVQualTargetType;
3699 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3701 CVQualTargetType>::type UnqualType;
3704 InvokeResult_AddCVRef<
3706 static_cast<bool>(k_IS_CONST_PTR)
3707 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3708 static_cast<bool>(k_IS_VOLATILE_PTR)
3709 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3710 static_cast<bool>(k_IS_LVALUE)
3711 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3719#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 0
3720template <
class t_FN>
3721struct InvokeResult_FunctorDeduction<true , t_FN> {
3727#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 1
3728template <
class t_FN,
class t_ARGTYPES_01>
3729struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01> {
3735#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 2
3736template <
class t_FN,
class t_ARGTYPES_01,
3737 class t_ARGTYPES_02>
3738struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3745#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 3
3746template <
class t_FN,
class t_ARGTYPES_01,
3747 class t_ARGTYPES_02,
3748 class t_ARGTYPES_03>
3749struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3757#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 4
3758template <
class t_FN,
class t_ARGTYPES_01,
3759 class t_ARGTYPES_02,
3760 class t_ARGTYPES_03,
3761 class t_ARGTYPES_04>
3762struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3771#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 5
3772template <
class t_FN,
class t_ARGTYPES_01,
3773 class t_ARGTYPES_02,
3774 class t_ARGTYPES_03,
3775 class t_ARGTYPES_04,
3776 class t_ARGTYPES_05>
3777struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3787#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 6
3788template <
class t_FN,
class t_ARGTYPES_01,
3789 class t_ARGTYPES_02,
3790 class t_ARGTYPES_03,
3791 class t_ARGTYPES_04,
3792 class t_ARGTYPES_05,
3793 class t_ARGTYPES_06>
3794struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3805#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 7
3806template <
class t_FN,
class t_ARGTYPES_01,
3807 class t_ARGTYPES_02,
3808 class t_ARGTYPES_03,
3809 class t_ARGTYPES_04,
3810 class t_ARGTYPES_05,
3811 class t_ARGTYPES_06,
3812 class t_ARGTYPES_07>
3813struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3825#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 8
3826template <
class t_FN,
class t_ARGTYPES_01,
3827 class t_ARGTYPES_02,
3828 class t_ARGTYPES_03,
3829 class t_ARGTYPES_04,
3830 class t_ARGTYPES_05,
3831 class t_ARGTYPES_06,
3832 class t_ARGTYPES_07,
3833 class t_ARGTYPES_08>
3834struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3847#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 9
3848template <
class t_FN,
class t_ARGTYPES_01,
3849 class t_ARGTYPES_02,
3850 class t_ARGTYPES_03,
3851 class t_ARGTYPES_04,
3852 class t_ARGTYPES_05,
3853 class t_ARGTYPES_06,
3854 class t_ARGTYPES_07,
3855 class t_ARGTYPES_08,
3856 class t_ARGTYPES_09>
3857struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3871#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 10
3872template <
class t_FN,
class t_ARGTYPES_01,
3873 class t_ARGTYPES_02,
3874 class t_ARGTYPES_03,
3875 class t_ARGTYPES_04,
3876 class t_ARGTYPES_05,
3877 class t_ARGTYPES_06,
3878 class t_ARGTYPES_07,
3879 class t_ARGTYPES_08,
3880 class t_ARGTYPES_09,
3881 class t_ARGTYPES_10>
3882struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3897#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 11
3898template <
class t_FN,
class t_ARGTYPES_01,
3899 class t_ARGTYPES_02,
3900 class t_ARGTYPES_03,
3901 class t_ARGTYPES_04,
3902 class t_ARGTYPES_05,
3903 class t_ARGTYPES_06,
3904 class t_ARGTYPES_07,
3905 class t_ARGTYPES_08,
3906 class t_ARGTYPES_09,
3907 class t_ARGTYPES_10,
3908 class t_ARGTYPES_11>
3909struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3925#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 12
3926template <
class t_FN,
class t_ARGTYPES_01,
3927 class t_ARGTYPES_02,
3928 class t_ARGTYPES_03,
3929 class t_ARGTYPES_04,
3930 class t_ARGTYPES_05,
3931 class t_ARGTYPES_06,
3932 class t_ARGTYPES_07,
3933 class t_ARGTYPES_08,
3934 class t_ARGTYPES_09,
3935 class t_ARGTYPES_10,
3936 class t_ARGTYPES_11,
3937 class t_ARGTYPES_12>
3938struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3955#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 13
3956template <
class t_FN,
class t_ARGTYPES_01,
3957 class t_ARGTYPES_02,
3958 class t_ARGTYPES_03,
3959 class t_ARGTYPES_04,
3960 class t_ARGTYPES_05,
3961 class t_ARGTYPES_06,
3962 class t_ARGTYPES_07,
3963 class t_ARGTYPES_08,
3964 class t_ARGTYPES_09,
3965 class t_ARGTYPES_10,
3966 class t_ARGTYPES_11,
3967 class t_ARGTYPES_12,
3968 class t_ARGTYPES_13>
3969struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3992#ifndef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
3993template <bool ,
class t_FN,
class... t_ARGTYPES>
3994struct InvokeResult_FunctorDeduction : InvokeResult_ImpUtils {
4001 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)))),
4002 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
4004 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...), 0)),
4005 k_IS_CONST_PTR = k_IS_POINTER &&
4007 myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...))),
4008 k_IS_VOLATILE_PTR = k_IS_POINTER &&
4010 myDeclval<t_ARGTYPES>()...))),
4012 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...))))),
4014 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)))),
4016 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)))),
4017 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
4018 (
int)InvokeResult_Index::e_OTHER)
4022 ! k_CANT_DEDUCE_TYPE,
4023 typename InvokeResult_Type<k_TARGET_INDEX>::type,
4025 >::type UnqualTargetType;
4028 InvokeResult_AddCVRef<UnqualTargetType,
4029 static_cast<bool>(k_IS_CONST_TARGET)
4030 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4031 static_cast<bool>(k_IS_VOLATILE_TARGET)
4032 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4033 false>::type CVQualTargetType;
4037 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4039 CVQualTargetType>::type UnqualType;
4042 InvokeResult_AddCVRef<
4044 static_cast<bool>(k_IS_CONST_PTR)
4045 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4046 static_cast<bool>(k_IS_VOLATILE_PTR)
4047 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4048 static_cast<bool>(k_IS_LVALUE)
4049 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
4055template <
class t_FN,
class... t_ARGTYPES>
4056struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES...> {
4073template <
class t_MEMOF_CLASS,
4078struct InvokeResult_MemPtrArgQualifiers {
4084 typename bsl::remove_reference<t_ARG_TYPE>::type>::value,
4086 typename bsl::remove_reference<t_ARG_TYPE>::type>::value
4101template <
class t_MEMOF_CLASS,
class t_ARG_TYPE>
4102struct InvokeResult_MemPtrArgQualifiers<t_MEMOF_CLASS, t_ARG_TYPE, false>
4103: InvokeResult_ImpUtils {
4105#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
4117 template <
class t_TP>
4118 static t_TP& tolvalue(t_TP&&);
4127 checkVolatile(tolvalue(*myDeclval<t_ARG_TYPE>())))};
4135 k_IS_CONST = k_IS_LVALUE &&
4138 *myDeclval<t_ARG_TYPE>()))
4143#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
4146#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT
4147#define BSLMF_INVOKERESULT_VARIADIC_LIMIT 13
4149#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT_E
4150#define BSLMF_INVOKERESULT_VARIADIC_LIMIT_E BSLMF_INVOKERESULT_VARIADIC_LIMIT
4153template <
class t_VOID_TYPE,
4155#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4156 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
4159#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4160 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
4163#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4164 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
4167#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4168 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
4171#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4172 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
4175#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4176 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
4179#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4180 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
4183#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4184 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
4187#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4188 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
4191#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4192 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
4195#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4196 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
4199#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4200 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
4203#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4204 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
4206 ,
class = BSLS_COMPILERFEATURES_NILT>
4207struct InvokeResult_FunctorImp;
4210template <
class t_VOID_TYPE,
4212#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4213 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
4216#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4217 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
4220#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4221 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
4224#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4225 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
4228#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4229 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
4232#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4233 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
4236#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4237 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
4240#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4241 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
4244#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4245 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
4248#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4249 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
4252#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4253 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
4256#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4257 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
4260#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4261 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
4263 ,
class = BSLS_COMPILERFEATURES_NILT>
4264struct InvokeResult_FuncPtrImp;
4268#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4269 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
4272#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4273 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
4276#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4277 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
4280#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4281 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
4284#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4285 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
4288#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4289 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
4292#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4293 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
4296#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4297 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
4300#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4301 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
4304#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4305 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
4308#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4309 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
4312#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4313 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
4316#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4317 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
4319 ,
class = BSLS_COMPILERFEATURES_NILT>
4320struct InvokeResult_MemFuncPtrImp;
4324#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4325 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
4328#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4329 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
4332#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4333 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
4336#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4337 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
4340#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4341 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
4344#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4345 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
4348#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4349 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
4352#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4353 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
4356#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4357 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
4360#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4361 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
4364#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4365 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
4368#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4369 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
4372#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4373 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
4375 ,
class = BSLS_COMPILERFEATURES_NILT>
4376struct InvokeResult_MemObjPtrImp;
4380#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4381template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4383struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN
4384 > : InvokeResult_FunctorImp<void, t_FN> {
4388#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4389template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4390 class t_FN,
class t_ARGTYPES_01>
4391struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4393 > : InvokeResult_FunctorImp<void, t_FN,
4398#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4399template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4400 class t_FN,
class t_ARGTYPES_01,
4401 class t_ARGTYPES_02>
4402struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4405 > : InvokeResult_FunctorImp<void, t_FN,
4411#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4412template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4413 class t_FN,
class t_ARGTYPES_01,
4414 class t_ARGTYPES_02,
4415 class t_ARGTYPES_03>
4416struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4420 > : InvokeResult_FunctorImp<void, t_FN,
4427#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4428template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4429 class t_FN,
class t_ARGTYPES_01,
4430 class t_ARGTYPES_02,
4431 class t_ARGTYPES_03,
4432 class t_ARGTYPES_04>
4433struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4438 > : InvokeResult_FunctorImp<void, t_FN,
4446#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4447template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4448 class t_FN,
class t_ARGTYPES_01,
4449 class t_ARGTYPES_02,
4450 class t_ARGTYPES_03,
4451 class t_ARGTYPES_04,
4452 class t_ARGTYPES_05>
4453struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4459 > : InvokeResult_FunctorImp<void, t_FN,
4468#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4469template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4470 class t_FN,
class t_ARGTYPES_01,
4471 class t_ARGTYPES_02,
4472 class t_ARGTYPES_03,
4473 class t_ARGTYPES_04,
4474 class t_ARGTYPES_05,
4475 class t_ARGTYPES_06>
4476struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4483 > : InvokeResult_FunctorImp<void, t_FN,
4493#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4494template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4495 class t_FN,
class t_ARGTYPES_01,
4496 class t_ARGTYPES_02,
4497 class t_ARGTYPES_03,
4498 class t_ARGTYPES_04,
4499 class t_ARGTYPES_05,
4500 class t_ARGTYPES_06,
4501 class t_ARGTYPES_07>
4502struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4510 > : InvokeResult_FunctorImp<void, t_FN,
4521#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4522template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4523 class t_FN,
class t_ARGTYPES_01,
4524 class t_ARGTYPES_02,
4525 class t_ARGTYPES_03,
4526 class t_ARGTYPES_04,
4527 class t_ARGTYPES_05,
4528 class t_ARGTYPES_06,
4529 class t_ARGTYPES_07,
4530 class t_ARGTYPES_08>
4531struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4540 > : InvokeResult_FunctorImp<void, t_FN,
4552#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4553template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4554 class t_FN,
class t_ARGTYPES_01,
4555 class t_ARGTYPES_02,
4556 class t_ARGTYPES_03,
4557 class t_ARGTYPES_04,
4558 class t_ARGTYPES_05,
4559 class t_ARGTYPES_06,
4560 class t_ARGTYPES_07,
4561 class t_ARGTYPES_08,
4562 class t_ARGTYPES_09>
4563struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4573 > : InvokeResult_FunctorImp<void, t_FN,
4586#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4587template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4588 class t_FN,
class t_ARGTYPES_01,
4589 class t_ARGTYPES_02,
4590 class t_ARGTYPES_03,
4591 class t_ARGTYPES_04,
4592 class t_ARGTYPES_05,
4593 class t_ARGTYPES_06,
4594 class t_ARGTYPES_07,
4595 class t_ARGTYPES_08,
4596 class t_ARGTYPES_09,
4597 class t_ARGTYPES_10>
4598struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4609 > : InvokeResult_FunctorImp<void, t_FN,
4623#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4624template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4625 class t_FN,
class t_ARGTYPES_01,
4626 class t_ARGTYPES_02,
4627 class t_ARGTYPES_03,
4628 class t_ARGTYPES_04,
4629 class t_ARGTYPES_05,
4630 class t_ARGTYPES_06,
4631 class t_ARGTYPES_07,
4632 class t_ARGTYPES_08,
4633 class t_ARGTYPES_09,
4634 class t_ARGTYPES_10,
4635 class t_ARGTYPES_11>
4636struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4648 > : InvokeResult_FunctorImp<void, t_FN,
4663#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4664template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4665 class t_FN,
class t_ARGTYPES_01,
4666 class t_ARGTYPES_02,
4667 class t_ARGTYPES_03,
4668 class t_ARGTYPES_04,
4669 class t_ARGTYPES_05,
4670 class t_ARGTYPES_06,
4671 class t_ARGTYPES_07,
4672 class t_ARGTYPES_08,
4673 class t_ARGTYPES_09,
4674 class t_ARGTYPES_10,
4675 class t_ARGTYPES_11,
4676 class t_ARGTYPES_12>
4677struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4690 > : InvokeResult_FunctorImp<void, t_FN,
4706#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
4707template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4708 class t_FN,
class t_ARGTYPES_01,
4709 class t_ARGTYPES_02,
4710 class t_ARGTYPES_03,
4711 class t_ARGTYPES_04,
4712 class t_ARGTYPES_05,
4713 class t_ARGTYPES_06,
4714 class t_ARGTYPES_07,
4715 class t_ARGTYPES_08,
4716 class t_ARGTYPES_09,
4717 class t_ARGTYPES_10,
4718 class t_ARGTYPES_11,
4719 class t_ARGTYPES_12,
4720 class t_ARGTYPES_13>
4721struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4735 > : InvokeResult_FunctorImp<void, t_FN,
4753#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4754template <
class t_FN>
4755struct InvokeResult_Imp<true ,
4759: InvokeResult_FuncPtrImp<void, t_FN> {
4763#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4764template <
class t_FN,
class t_ARGTYPES_01>
4765struct InvokeResult_Imp<true ,
4770: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01> {
4774#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4775template <
class t_FN,
class t_ARGTYPES_01,
4776 class t_ARGTYPES_02>
4777struct InvokeResult_Imp<true ,
4783: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4788#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4789template <
class t_FN,
class t_ARGTYPES_01,
4790 class t_ARGTYPES_02,
4791 class t_ARGTYPES_03>
4792struct InvokeResult_Imp<true ,
4799: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4805#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4806template <
class t_FN,
class t_ARGTYPES_01,
4807 class t_ARGTYPES_02,
4808 class t_ARGTYPES_03,
4809 class t_ARGTYPES_04>
4810struct InvokeResult_Imp<true ,
4818: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4825#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4826template <
class t_FN,
class t_ARGTYPES_01,
4827 class t_ARGTYPES_02,
4828 class t_ARGTYPES_03,
4829 class t_ARGTYPES_04,
4830 class t_ARGTYPES_05>
4831struct InvokeResult_Imp<true ,
4840: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4848#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4849template <
class t_FN,
class t_ARGTYPES_01,
4850 class t_ARGTYPES_02,
4851 class t_ARGTYPES_03,
4852 class t_ARGTYPES_04,
4853 class t_ARGTYPES_05,
4854 class t_ARGTYPES_06>
4855struct InvokeResult_Imp<true ,
4865: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4874#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4875template <
class t_FN,
class t_ARGTYPES_01,
4876 class t_ARGTYPES_02,
4877 class t_ARGTYPES_03,
4878 class t_ARGTYPES_04,
4879 class t_ARGTYPES_05,
4880 class t_ARGTYPES_06,
4881 class t_ARGTYPES_07>
4882struct InvokeResult_Imp<true ,
4893: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4903#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4904template <
class t_FN,
class t_ARGTYPES_01,
4905 class t_ARGTYPES_02,
4906 class t_ARGTYPES_03,
4907 class t_ARGTYPES_04,
4908 class t_ARGTYPES_05,
4909 class t_ARGTYPES_06,
4910 class t_ARGTYPES_07,
4911 class t_ARGTYPES_08>
4912struct InvokeResult_Imp<true ,
4924: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4935#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4936template <
class t_FN,
class t_ARGTYPES_01,
4937 class t_ARGTYPES_02,
4938 class t_ARGTYPES_03,
4939 class t_ARGTYPES_04,
4940 class t_ARGTYPES_05,
4941 class t_ARGTYPES_06,
4942 class t_ARGTYPES_07,
4943 class t_ARGTYPES_08,
4944 class t_ARGTYPES_09>
4945struct InvokeResult_Imp<true ,
4958: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4970#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4971template <
class t_FN,
class t_ARGTYPES_01,
4972 class t_ARGTYPES_02,
4973 class t_ARGTYPES_03,
4974 class t_ARGTYPES_04,
4975 class t_ARGTYPES_05,
4976 class t_ARGTYPES_06,
4977 class t_ARGTYPES_07,
4978 class t_ARGTYPES_08,
4979 class t_ARGTYPES_09,
4980 class t_ARGTYPES_10>
4981struct InvokeResult_Imp<true ,
4995: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
5008#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
5009template <
class t_FN,
class t_ARGTYPES_01,
5010 class t_ARGTYPES_02,
5011 class t_ARGTYPES_03,
5012 class t_ARGTYPES_04,
5013 class t_ARGTYPES_05,
5014 class t_ARGTYPES_06,
5015 class t_ARGTYPES_07,
5016 class t_ARGTYPES_08,
5017 class t_ARGTYPES_09,
5018 class t_ARGTYPES_10,
5019 class t_ARGTYPES_11>
5020struct InvokeResult_Imp<true ,
5035: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
5049#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
5050template <
class t_FN,
class t_ARGTYPES_01,
5051 class t_ARGTYPES_02,
5052 class t_ARGTYPES_03,
5053 class t_ARGTYPES_04,
5054 class t_ARGTYPES_05,
5055 class t_ARGTYPES_06,
5056 class t_ARGTYPES_07,
5057 class t_ARGTYPES_08,
5058 class t_ARGTYPES_09,
5059 class t_ARGTYPES_10,
5060 class t_ARGTYPES_11,
5061 class t_ARGTYPES_12>
5062struct InvokeResult_Imp<true ,
5078: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
5093#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
5094template <
class t_FN,
class t_ARGTYPES_01,
5095 class t_ARGTYPES_02,
5096 class t_ARGTYPES_03,
5097 class t_ARGTYPES_04,
5098 class t_ARGTYPES_05,
5099 class t_ARGTYPES_06,
5100 class t_ARGTYPES_07,
5101 class t_ARGTYPES_08,
5102 class t_ARGTYPES_09,
5103 class t_ARGTYPES_10,
5104 class t_ARGTYPES_11,
5105 class t_ARGTYPES_12,
5106 class t_ARGTYPES_13>
5107struct InvokeResult_Imp<true ,
5124: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
5141#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
5142template <
class t_FN>
5143struct InvokeResult_Imp<false,
5147: InvokeResult_MemFuncPtrImp<t_FN> {
5151#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
5152template <
class t_FN,
class t_ARGTYPES_01>
5153struct InvokeResult_Imp<false,
5158: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01> {
5162#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
5163template <
class t_FN,
class t_ARGTYPES_01,
5164 class t_ARGTYPES_02>
5165struct InvokeResult_Imp<false,
5171: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5176#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
5177template <
class t_FN,
class t_ARGTYPES_01,
5178 class t_ARGTYPES_02,
5179 class t_ARGTYPES_03>
5180struct InvokeResult_Imp<false,
5187: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5193#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
5194template <
class t_FN,
class t_ARGTYPES_01,
5195 class t_ARGTYPES_02,
5196 class t_ARGTYPES_03,
5197 class t_ARGTYPES_04>
5198struct InvokeResult_Imp<false,
5206: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5213#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
5214template <
class t_FN,
class t_ARGTYPES_01,
5215 class t_ARGTYPES_02,
5216 class t_ARGTYPES_03,
5217 class t_ARGTYPES_04,
5218 class t_ARGTYPES_05>
5219struct InvokeResult_Imp<false,
5228: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5236#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
5237template <
class t_FN,
class t_ARGTYPES_01,
5238 class t_ARGTYPES_02,
5239 class t_ARGTYPES_03,
5240 class t_ARGTYPES_04,
5241 class t_ARGTYPES_05,
5242 class t_ARGTYPES_06>
5243struct InvokeResult_Imp<false,
5253: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5262#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
5263template <
class t_FN,
class t_ARGTYPES_01,
5264 class t_ARGTYPES_02,
5265 class t_ARGTYPES_03,
5266 class t_ARGTYPES_04,
5267 class t_ARGTYPES_05,
5268 class t_ARGTYPES_06,
5269 class t_ARGTYPES_07>
5270struct InvokeResult_Imp<false,
5281: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5291#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
5292template <
class t_FN,
class t_ARGTYPES_01,
5293 class t_ARGTYPES_02,
5294 class t_ARGTYPES_03,
5295 class t_ARGTYPES_04,
5296 class t_ARGTYPES_05,
5297 class t_ARGTYPES_06,
5298 class t_ARGTYPES_07,
5299 class t_ARGTYPES_08>
5300struct InvokeResult_Imp<false,
5312: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5323#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
5324template <
class t_FN,
class t_ARGTYPES_01,
5325 class t_ARGTYPES_02,
5326 class t_ARGTYPES_03,
5327 class t_ARGTYPES_04,
5328 class t_ARGTYPES_05,
5329 class t_ARGTYPES_06,
5330 class t_ARGTYPES_07,
5331 class t_ARGTYPES_08,
5332 class t_ARGTYPES_09>
5333struct InvokeResult_Imp<false,
5346: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5358#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
5359template <
class t_FN,
class t_ARGTYPES_01,
5360 class t_ARGTYPES_02,
5361 class t_ARGTYPES_03,
5362 class t_ARGTYPES_04,
5363 class t_ARGTYPES_05,
5364 class t_ARGTYPES_06,
5365 class t_ARGTYPES_07,
5366 class t_ARGTYPES_08,
5367 class t_ARGTYPES_09,
5368 class t_ARGTYPES_10>
5369struct InvokeResult_Imp<false,
5383: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5396#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
5397template <
class t_FN,
class t_ARGTYPES_01,
5398 class t_ARGTYPES_02,
5399 class t_ARGTYPES_03,
5400 class t_ARGTYPES_04,
5401 class t_ARGTYPES_05,
5402 class t_ARGTYPES_06,
5403 class t_ARGTYPES_07,
5404 class t_ARGTYPES_08,
5405 class t_ARGTYPES_09,
5406 class t_ARGTYPES_10,
5407 class t_ARGTYPES_11>
5408struct InvokeResult_Imp<false,
5423: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5437#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
5438template <
class t_FN,
class t_ARGTYPES_01,
5439 class t_ARGTYPES_02,
5440 class t_ARGTYPES_03,
5441 class t_ARGTYPES_04,
5442 class t_ARGTYPES_05,
5443 class t_ARGTYPES_06,
5444 class t_ARGTYPES_07,
5445 class t_ARGTYPES_08,
5446 class t_ARGTYPES_09,
5447 class t_ARGTYPES_10,
5448 class t_ARGTYPES_11,
5449 class t_ARGTYPES_12>
5450struct InvokeResult_Imp<false,
5466: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5481#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
5482template <
class t_FN,
class t_ARGTYPES_01,
5483 class t_ARGTYPES_02,
5484 class t_ARGTYPES_03,
5485 class t_ARGTYPES_04,
5486 class t_ARGTYPES_05,
5487 class t_ARGTYPES_06,
5488 class t_ARGTYPES_07,
5489 class t_ARGTYPES_08,
5490 class t_ARGTYPES_09,
5491 class t_ARGTYPES_10,
5492 class t_ARGTYPES_11,
5493 class t_ARGTYPES_12,
5494 class t_ARGTYPES_13>
5495struct InvokeResult_Imp<false,
5512: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5529#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
5530template <
class t_FN>
5531struct InvokeResult_Imp<false,
5535: InvokeResult_MemObjPtrImp<t_FN> {
5539#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
5540template <
class t_FN,
class t_ARGTYPES_01>
5541struct InvokeResult_Imp<false,
5546: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01> {
5550#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
5551template <
class t_FN,
class t_ARGTYPES_01,
5552 class t_ARGTYPES_02>
5553struct InvokeResult_Imp<false,
5559: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5564#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
5565template <
class t_FN,
class t_ARGTYPES_01,
5566 class t_ARGTYPES_02,
5567 class t_ARGTYPES_03>
5568struct InvokeResult_Imp<false,
5575: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5581#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
5582template <
class t_FN,
class t_ARGTYPES_01,
5583 class t_ARGTYPES_02,
5584 class t_ARGTYPES_03,
5585 class t_ARGTYPES_04>
5586struct InvokeResult_Imp<false,
5594: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5601#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
5602template <
class t_FN,
class t_ARGTYPES_01,
5603 class t_ARGTYPES_02,
5604 class t_ARGTYPES_03,
5605 class t_ARGTYPES_04,
5606 class t_ARGTYPES_05>
5607struct InvokeResult_Imp<false,
5616: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5624#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
5625template <
class t_FN,
class t_ARGTYPES_01,
5626 class t_ARGTYPES_02,
5627 class t_ARGTYPES_03,
5628 class t_ARGTYPES_04,
5629 class t_ARGTYPES_05,
5630 class t_ARGTYPES_06>
5631struct InvokeResult_Imp<false,
5641: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5650#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
5651template <
class t_FN,
class t_ARGTYPES_01,
5652 class t_ARGTYPES_02,
5653 class t_ARGTYPES_03,
5654 class t_ARGTYPES_04,
5655 class t_ARGTYPES_05,
5656 class t_ARGTYPES_06,
5657 class t_ARGTYPES_07>
5658struct InvokeResult_Imp<false,
5669: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5679#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
5680template <
class t_FN,
class t_ARGTYPES_01,
5681 class t_ARGTYPES_02,
5682 class t_ARGTYPES_03,
5683 class t_ARGTYPES_04,
5684 class t_ARGTYPES_05,
5685 class t_ARGTYPES_06,
5686 class t_ARGTYPES_07,
5687 class t_ARGTYPES_08>
5688struct InvokeResult_Imp<false,
5700: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5711#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
5712template <
class t_FN,
class t_ARGTYPES_01,
5713 class t_ARGTYPES_02,
5714 class t_ARGTYPES_03,
5715 class t_ARGTYPES_04,
5716 class t_ARGTYPES_05,
5717 class t_ARGTYPES_06,
5718 class t_ARGTYPES_07,
5719 class t_ARGTYPES_08,
5720 class t_ARGTYPES_09>
5721struct InvokeResult_Imp<false,
5734: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5746#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
5747template <
class t_FN,
class t_ARGTYPES_01,
5748 class t_ARGTYPES_02,
5749 class t_ARGTYPES_03,
5750 class t_ARGTYPES_04,
5751 class t_ARGTYPES_05,
5752 class t_ARGTYPES_06,
5753 class t_ARGTYPES_07,
5754 class t_ARGTYPES_08,
5755 class t_ARGTYPES_09,
5756 class t_ARGTYPES_10>
5757struct InvokeResult_Imp<false,
5771: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5784#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
5785template <
class t_FN,
class t_ARGTYPES_01,
5786 class t_ARGTYPES_02,
5787 class t_ARGTYPES_03,
5788 class t_ARGTYPES_04,
5789 class t_ARGTYPES_05,
5790 class t_ARGTYPES_06,
5791 class t_ARGTYPES_07,
5792 class t_ARGTYPES_08,
5793 class t_ARGTYPES_09,
5794 class t_ARGTYPES_10,
5795 class t_ARGTYPES_11>
5796struct InvokeResult_Imp<false,
5811: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5825#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
5826template <
class t_FN,
class t_ARGTYPES_01,
5827 class t_ARGTYPES_02,
5828 class t_ARGTYPES_03,
5829 class t_ARGTYPES_04,
5830 class t_ARGTYPES_05,
5831 class t_ARGTYPES_06,
5832 class t_ARGTYPES_07,
5833 class t_ARGTYPES_08,
5834 class t_ARGTYPES_09,
5835 class t_ARGTYPES_10,
5836 class t_ARGTYPES_11,
5837 class t_ARGTYPES_12>
5838struct InvokeResult_Imp<false,
5854: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5869#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
5870template <
class t_FN,
class t_ARGTYPES_01,
5871 class t_ARGTYPES_02,
5872 class t_ARGTYPES_03,
5873 class t_ARGTYPES_04,
5874 class t_ARGTYPES_05,
5875 class t_ARGTYPES_06,
5876 class t_ARGTYPES_07,
5877 class t_ARGTYPES_08,
5878 class t_ARGTYPES_09,
5879 class t_ARGTYPES_10,
5880 class t_ARGTYPES_11,
5881 class t_ARGTYPES_12,
5882 class t_ARGTYPES_13>
5883struct InvokeResult_Imp<false,
5900: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5918#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
5919#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
5920template <
class t_VOID_TYPE,
class t_FN>
5921struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN> {
5925#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
5926template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01>
5927struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01> {
5931#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
5932template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5933 class t_ARGTYPES_02>
5934struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
5939#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
5940template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5941 class t_ARGTYPES_02,
5942 class t_ARGTYPES_03>
5943struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
5949#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
5950template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5951 class t_ARGTYPES_02,
5952 class t_ARGTYPES_03,
5953 class t_ARGTYPES_04>
5954struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
5961#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
5962template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5963 class t_ARGTYPES_02,
5964 class t_ARGTYPES_03,
5965 class t_ARGTYPES_04,
5966 class t_ARGTYPES_05>
5967struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
5975#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
5976template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5977 class t_ARGTYPES_02,
5978 class t_ARGTYPES_03,
5979 class t_ARGTYPES_04,
5980 class t_ARGTYPES_05,
5981 class t_ARGTYPES_06>
5982struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
5991#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
5992template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5993 class t_ARGTYPES_02,
5994 class t_ARGTYPES_03,
5995 class t_ARGTYPES_04,
5996 class t_ARGTYPES_05,
5997 class t_ARGTYPES_06,
5998 class t_ARGTYPES_07>
5999struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6009#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
6010template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6011 class t_ARGTYPES_02,
6012 class t_ARGTYPES_03,
6013 class t_ARGTYPES_04,
6014 class t_ARGTYPES_05,
6015 class t_ARGTYPES_06,
6016 class t_ARGTYPES_07,
6017 class t_ARGTYPES_08>
6018struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6029#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
6030template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6031 class t_ARGTYPES_02,
6032 class t_ARGTYPES_03,
6033 class t_ARGTYPES_04,
6034 class t_ARGTYPES_05,
6035 class t_ARGTYPES_06,
6036 class t_ARGTYPES_07,
6037 class t_ARGTYPES_08,
6038 class t_ARGTYPES_09>
6039struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6051#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
6052template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6053 class t_ARGTYPES_02,
6054 class t_ARGTYPES_03,
6055 class t_ARGTYPES_04,
6056 class t_ARGTYPES_05,
6057 class t_ARGTYPES_06,
6058 class t_ARGTYPES_07,
6059 class t_ARGTYPES_08,
6060 class t_ARGTYPES_09,
6061 class t_ARGTYPES_10>
6062struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6075#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
6076template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6077 class t_ARGTYPES_02,
6078 class t_ARGTYPES_03,
6079 class t_ARGTYPES_04,
6080 class t_ARGTYPES_05,
6081 class t_ARGTYPES_06,
6082 class t_ARGTYPES_07,
6083 class t_ARGTYPES_08,
6084 class t_ARGTYPES_09,
6085 class t_ARGTYPES_10,
6086 class t_ARGTYPES_11>
6087struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6101#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
6102template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6103 class t_ARGTYPES_02,
6104 class t_ARGTYPES_03,
6105 class t_ARGTYPES_04,
6106 class t_ARGTYPES_05,
6107 class t_ARGTYPES_06,
6108 class t_ARGTYPES_07,
6109 class t_ARGTYPES_08,
6110 class t_ARGTYPES_09,
6111 class t_ARGTYPES_10,
6112 class t_ARGTYPES_11,
6113 class t_ARGTYPES_12>
6114struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6129#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
6130template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6131 class t_ARGTYPES_02,
6132 class t_ARGTYPES_03,
6133 class t_ARGTYPES_04,
6134 class t_ARGTYPES_05,
6135 class t_ARGTYPES_06,
6136 class t_ARGTYPES_07,
6137 class t_ARGTYPES_08,
6138 class t_ARGTYPES_09,
6139 class t_ARGTYPES_10,
6140 class t_ARGTYPES_11,
6141 class t_ARGTYPES_12,
6142 class t_ARGTYPES_13>
6143struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6160#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
6161template <
class t_FN>
6162struct InvokeResult_FunctorImp<
6163 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6165 t_FN> : InvokeResult_ImpUtils {
6168 typedef decltype(myDeclval<t_FN>()()) type;
6172#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
6173template <
class t_FN,
class t_ARGTYPES_01>
6174struct InvokeResult_FunctorImp<
6175 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6176 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
6178 t_ARGTYPES_01> : InvokeResult_ImpUtils {
6181 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())) type;
6185#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
6186template <
class t_FN,
class t_ARGTYPES_01,
6187 class t_ARGTYPES_02>
6188struct InvokeResult_FunctorImp<
6189 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6190 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6191 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
6194 t_ARGTYPES_02> : InvokeResult_ImpUtils {
6197 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6198 myDeclval<t_ARGTYPES_02>())) type;
6202#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
6203template <
class t_FN,
class t_ARGTYPES_01,
6204 class t_ARGTYPES_02,
6205 class t_ARGTYPES_03>
6206struct InvokeResult_FunctorImp<
6207 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6208 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6209 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6210 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
6214 t_ARGTYPES_03> : InvokeResult_ImpUtils {
6217 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6218 myDeclval<t_ARGTYPES_02>(),
6219 myDeclval<t_ARGTYPES_03>())) type;
6223#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
6224template <
class t_FN,
class t_ARGTYPES_01,
6225 class t_ARGTYPES_02,
6226 class t_ARGTYPES_03,
6227 class t_ARGTYPES_04>
6228struct InvokeResult_FunctorImp<
6229 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6230 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6231 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6232 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6233 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
6238 t_ARGTYPES_04> : InvokeResult_ImpUtils {
6241 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6242 myDeclval<t_ARGTYPES_02>(),
6243 myDeclval<t_ARGTYPES_03>(),
6244 myDeclval<t_ARGTYPES_04>())) type;
6248#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
6249template <
class t_FN,
class t_ARGTYPES_01,
6250 class t_ARGTYPES_02,
6251 class t_ARGTYPES_03,
6252 class t_ARGTYPES_04,
6253 class t_ARGTYPES_05>
6254struct InvokeResult_FunctorImp<
6255 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6256 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6257 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6258 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6259 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6260 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
6266 t_ARGTYPES_05> : InvokeResult_ImpUtils {
6269 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6270 myDeclval<t_ARGTYPES_02>(),
6271 myDeclval<t_ARGTYPES_03>(),
6272 myDeclval<t_ARGTYPES_04>(),
6273 myDeclval<t_ARGTYPES_05>())) type;
6277#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
6278template <
class t_FN,
class t_ARGTYPES_01,
6279 class t_ARGTYPES_02,
6280 class t_ARGTYPES_03,
6281 class t_ARGTYPES_04,
6282 class t_ARGTYPES_05,
6283 class t_ARGTYPES_06>
6284struct InvokeResult_FunctorImp<
6285 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6286 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6287 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6288 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6289 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6290 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6291 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
6298 t_ARGTYPES_06> : InvokeResult_ImpUtils {
6301 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6302 myDeclval<t_ARGTYPES_02>(),
6303 myDeclval<t_ARGTYPES_03>(),
6304 myDeclval<t_ARGTYPES_04>(),
6305 myDeclval<t_ARGTYPES_05>(),
6306 myDeclval<t_ARGTYPES_06>())) type;
6310#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
6311template <
class t_FN,
class t_ARGTYPES_01,
6312 class t_ARGTYPES_02,
6313 class t_ARGTYPES_03,
6314 class t_ARGTYPES_04,
6315 class t_ARGTYPES_05,
6316 class t_ARGTYPES_06,
6317 class t_ARGTYPES_07>
6318struct InvokeResult_FunctorImp<
6319 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6320 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6321 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6322 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6323 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6324 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6325 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6326 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
6334 t_ARGTYPES_07> : InvokeResult_ImpUtils {
6337 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6338 myDeclval<t_ARGTYPES_02>(),
6339 myDeclval<t_ARGTYPES_03>(),
6340 myDeclval<t_ARGTYPES_04>(),
6341 myDeclval<t_ARGTYPES_05>(),
6342 myDeclval<t_ARGTYPES_06>(),
6343 myDeclval<t_ARGTYPES_07>())) type;
6347#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
6348template <
class t_FN,
class t_ARGTYPES_01,
6349 class t_ARGTYPES_02,
6350 class t_ARGTYPES_03,
6351 class t_ARGTYPES_04,
6352 class t_ARGTYPES_05,
6353 class t_ARGTYPES_06,
6354 class t_ARGTYPES_07,
6355 class t_ARGTYPES_08>
6356struct InvokeResult_FunctorImp<
6357 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6358 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6359 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6360 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6361 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6362 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6363 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6364 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6365 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
6374 t_ARGTYPES_08> : InvokeResult_ImpUtils {
6377 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6378 myDeclval<t_ARGTYPES_02>(),
6379 myDeclval<t_ARGTYPES_03>(),
6380 myDeclval<t_ARGTYPES_04>(),
6381 myDeclval<t_ARGTYPES_05>(),
6382 myDeclval<t_ARGTYPES_06>(),
6383 myDeclval<t_ARGTYPES_07>(),
6384 myDeclval<t_ARGTYPES_08>())) type;
6388#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
6389template <
class t_FN,
class t_ARGTYPES_01,
6390 class t_ARGTYPES_02,
6391 class t_ARGTYPES_03,
6392 class t_ARGTYPES_04,
6393 class t_ARGTYPES_05,
6394 class t_ARGTYPES_06,
6395 class t_ARGTYPES_07,
6396 class t_ARGTYPES_08,
6397 class t_ARGTYPES_09>
6398struct InvokeResult_FunctorImp<
6399 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6400 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6401 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6402 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6403 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6404 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6405 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6406 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6407 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6408 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
6418 t_ARGTYPES_09> : InvokeResult_ImpUtils {
6421 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6422 myDeclval<t_ARGTYPES_02>(),
6423 myDeclval<t_ARGTYPES_03>(),
6424 myDeclval<t_ARGTYPES_04>(),
6425 myDeclval<t_ARGTYPES_05>(),
6426 myDeclval<t_ARGTYPES_06>(),
6427 myDeclval<t_ARGTYPES_07>(),
6428 myDeclval<t_ARGTYPES_08>(),
6429 myDeclval<t_ARGTYPES_09>())) type;
6433#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
6434template <
class t_FN,
class t_ARGTYPES_01,
6435 class t_ARGTYPES_02,
6436 class t_ARGTYPES_03,
6437 class t_ARGTYPES_04,
6438 class t_ARGTYPES_05,
6439 class t_ARGTYPES_06,
6440 class t_ARGTYPES_07,
6441 class t_ARGTYPES_08,
6442 class t_ARGTYPES_09,
6443 class t_ARGTYPES_10>
6444struct InvokeResult_FunctorImp<
6445 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6446 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6447 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6448 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6449 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6450 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6451 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6452 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6453 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6454 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
6455 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
6466 t_ARGTYPES_10> : InvokeResult_ImpUtils {
6469 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6470 myDeclval<t_ARGTYPES_02>(),
6471 myDeclval<t_ARGTYPES_03>(),
6472 myDeclval<t_ARGTYPES_04>(),
6473 myDeclval<t_ARGTYPES_05>(),
6474 myDeclval<t_ARGTYPES_06>(),
6475 myDeclval<t_ARGTYPES_07>(),
6476 myDeclval<t_ARGTYPES_08>(),
6477 myDeclval<t_ARGTYPES_09>(),
6478 myDeclval<t_ARGTYPES_10>())) type;
6482#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
6483template <
class t_FN,
class t_ARGTYPES_01,
6484 class t_ARGTYPES_02,
6485 class t_ARGTYPES_03,
6486 class t_ARGTYPES_04,
6487 class t_ARGTYPES_05,
6488 class t_ARGTYPES_06,
6489 class t_ARGTYPES_07,
6490 class t_ARGTYPES_08,
6491 class t_ARGTYPES_09,
6492 class t_ARGTYPES_10,
6493 class t_ARGTYPES_11>
6494struct InvokeResult_FunctorImp<
6495 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6496 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6497 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6498 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6499 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6500 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6501 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6502 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6503 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6504 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
6505 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
6506 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
6518 t_ARGTYPES_11> : InvokeResult_ImpUtils {
6521 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6522 myDeclval<t_ARGTYPES_02>(),
6523 myDeclval<t_ARGTYPES_03>(),
6524 myDeclval<t_ARGTYPES_04>(),
6525 myDeclval<t_ARGTYPES_05>(),
6526 myDeclval<t_ARGTYPES_06>(),
6527 myDeclval<t_ARGTYPES_07>(),
6528 myDeclval<t_ARGTYPES_08>(),
6529 myDeclval<t_ARGTYPES_09>(),
6530 myDeclval<t_ARGTYPES_10>(),
6531 myDeclval<t_ARGTYPES_11>())) type;
6535#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
6536template <
class t_FN,
class t_ARGTYPES_01,
6537 class t_ARGTYPES_02,
6538 class t_ARGTYPES_03,
6539 class t_ARGTYPES_04,
6540 class t_ARGTYPES_05,
6541 class t_ARGTYPES_06,
6542 class t_ARGTYPES_07,
6543 class t_ARGTYPES_08,
6544 class t_ARGTYPES_09,
6545 class t_ARGTYPES_10,
6546 class t_ARGTYPES_11,
6547 class t_ARGTYPES_12>
6548struct InvokeResult_FunctorImp<
6549 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6550 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6551 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6552 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6553 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6554 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6555 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6556 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6557 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6558 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
6559 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
6560 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
6561 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
6574 t_ARGTYPES_12> : InvokeResult_ImpUtils {
6577 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6578 myDeclval<t_ARGTYPES_02>(),
6579 myDeclval<t_ARGTYPES_03>(),
6580 myDeclval<t_ARGTYPES_04>(),
6581 myDeclval<t_ARGTYPES_05>(),
6582 myDeclval<t_ARGTYPES_06>(),
6583 myDeclval<t_ARGTYPES_07>(),
6584 myDeclval<t_ARGTYPES_08>(),
6585 myDeclval<t_ARGTYPES_09>(),
6586 myDeclval<t_ARGTYPES_10>(),
6587 myDeclval<t_ARGTYPES_11>(),
6588 myDeclval<t_ARGTYPES_12>())) type;
6592#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
6593template <
class t_FN,
class t_ARGTYPES_01,
6594 class t_ARGTYPES_02,
6595 class t_ARGTYPES_03,
6596 class t_ARGTYPES_04,
6597 class t_ARGTYPES_05,
6598 class t_ARGTYPES_06,
6599 class t_ARGTYPES_07,
6600 class t_ARGTYPES_08,
6601 class t_ARGTYPES_09,
6602 class t_ARGTYPES_10,
6603 class t_ARGTYPES_11,
6604 class t_ARGTYPES_12,
6605 class t_ARGTYPES_13>
6606struct InvokeResult_FunctorImp<
6607 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6608 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6609 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6610 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6611 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6612 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6613 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6614 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6615 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6616 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
6617 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
6618 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
6619 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
6620 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
6634 t_ARGTYPES_13> : InvokeResult_ImpUtils {
6637 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6638 myDeclval<t_ARGTYPES_02>(),
6639 myDeclval<t_ARGTYPES_03>(),
6640 myDeclval<t_ARGTYPES_04>(),
6641 myDeclval<t_ARGTYPES_05>(),
6642 myDeclval<t_ARGTYPES_06>(),
6643 myDeclval<t_ARGTYPES_07>(),
6644 myDeclval<t_ARGTYPES_08>(),
6645 myDeclval<t_ARGTYPES_09>(),
6646 myDeclval<t_ARGTYPES_10>(),
6647 myDeclval<t_ARGTYPES_11>(),
6648 myDeclval<t_ARGTYPES_12>(),
6649 myDeclval<t_ARGTYPES_13>())) type;
6654#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
6655template <
class t_VOID_TYPE,
class t_FN>
6656struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN> : InvokeResult_ImpUtils {
6660 myDeclval<t_FN>()(),
6661 InvokeResult_VoidChecker()))
6664 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6669#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
6670template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01>
6671struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01
6672 > : InvokeResult_ImpUtils {
6676 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>()),
6677 InvokeResult_VoidChecker()))
6680 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6682 t_ARGTYPES_01>::type type;
6686#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
6687template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6688 class t_ARGTYPES_02>
6689struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6691 > : InvokeResult_ImpUtils {
6695 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6696 myDeclval<t_ARGTYPES_02>()),
6697 InvokeResult_VoidChecker()))
6700 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6703 t_ARGTYPES_02>::type type;
6707#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
6708template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6709 class t_ARGTYPES_02,
6710 class t_ARGTYPES_03>
6711struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6714 > : InvokeResult_ImpUtils {
6718 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6719 myDeclval<t_ARGTYPES_02>(),
6720 myDeclval<t_ARGTYPES_03>()),
6721 InvokeResult_VoidChecker()))
6724 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6728 t_ARGTYPES_03>::type type;
6732#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
6733template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6734 class t_ARGTYPES_02,
6735 class t_ARGTYPES_03,
6736 class t_ARGTYPES_04>
6737struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6741 > : InvokeResult_ImpUtils {
6745 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6746 myDeclval<t_ARGTYPES_02>(),
6747 myDeclval<t_ARGTYPES_03>(),
6748 myDeclval<t_ARGTYPES_04>()),
6749 InvokeResult_VoidChecker()))
6752 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6757 t_ARGTYPES_04>::type type;
6761#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
6762template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6763 class t_ARGTYPES_02,
6764 class t_ARGTYPES_03,
6765 class t_ARGTYPES_04,
6766 class t_ARGTYPES_05>
6767struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6772 > : InvokeResult_ImpUtils {
6776 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6777 myDeclval<t_ARGTYPES_02>(),
6778 myDeclval<t_ARGTYPES_03>(),
6779 myDeclval<t_ARGTYPES_04>(),
6780 myDeclval<t_ARGTYPES_05>()),
6781 InvokeResult_VoidChecker()))
6784 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6790 t_ARGTYPES_05>::type type;
6794#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
6795template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6796 class t_ARGTYPES_02,
6797 class t_ARGTYPES_03,
6798 class t_ARGTYPES_04,
6799 class t_ARGTYPES_05,
6800 class t_ARGTYPES_06>
6801struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6807 > : InvokeResult_ImpUtils {
6811 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6812 myDeclval<t_ARGTYPES_02>(),
6813 myDeclval<t_ARGTYPES_03>(),
6814 myDeclval<t_ARGTYPES_04>(),
6815 myDeclval<t_ARGTYPES_05>(),
6816 myDeclval<t_ARGTYPES_06>()),
6817 InvokeResult_VoidChecker()))
6820 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6827 t_ARGTYPES_06>::type type;
6831#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
6832template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6833 class t_ARGTYPES_02,
6834 class t_ARGTYPES_03,
6835 class t_ARGTYPES_04,
6836 class t_ARGTYPES_05,
6837 class t_ARGTYPES_06,
6838 class t_ARGTYPES_07>
6839struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6846 > : InvokeResult_ImpUtils {
6850 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6851 myDeclval<t_ARGTYPES_02>(),
6852 myDeclval<t_ARGTYPES_03>(),
6853 myDeclval<t_ARGTYPES_04>(),
6854 myDeclval<t_ARGTYPES_05>(),
6855 myDeclval<t_ARGTYPES_06>(),
6856 myDeclval<t_ARGTYPES_07>()),
6857 InvokeResult_VoidChecker()))
6860 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6868 t_ARGTYPES_07>::type type;
6872#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
6873template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6874 class t_ARGTYPES_02,
6875 class t_ARGTYPES_03,
6876 class t_ARGTYPES_04,
6877 class t_ARGTYPES_05,
6878 class t_ARGTYPES_06,
6879 class t_ARGTYPES_07,
6880 class t_ARGTYPES_08>
6881struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6889 > : InvokeResult_ImpUtils {
6893 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6894 myDeclval<t_ARGTYPES_02>(),
6895 myDeclval<t_ARGTYPES_03>(),
6896 myDeclval<t_ARGTYPES_04>(),
6897 myDeclval<t_ARGTYPES_05>(),
6898 myDeclval<t_ARGTYPES_06>(),
6899 myDeclval<t_ARGTYPES_07>(),
6900 myDeclval<t_ARGTYPES_08>()),
6901 InvokeResult_VoidChecker()))
6904 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6913 t_ARGTYPES_08>::type type;
6917#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
6918template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6919 class t_ARGTYPES_02,
6920 class t_ARGTYPES_03,
6921 class t_ARGTYPES_04,
6922 class t_ARGTYPES_05,
6923 class t_ARGTYPES_06,
6924 class t_ARGTYPES_07,
6925 class t_ARGTYPES_08,
6926 class t_ARGTYPES_09>
6927struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6936 > : InvokeResult_ImpUtils {
6940 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6941 myDeclval<t_ARGTYPES_02>(),
6942 myDeclval<t_ARGTYPES_03>(),
6943 myDeclval<t_ARGTYPES_04>(),
6944 myDeclval<t_ARGTYPES_05>(),
6945 myDeclval<t_ARGTYPES_06>(),
6946 myDeclval<t_ARGTYPES_07>(),
6947 myDeclval<t_ARGTYPES_08>(),
6948 myDeclval<t_ARGTYPES_09>()),
6949 InvokeResult_VoidChecker()))
6952 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6962 t_ARGTYPES_09>::type type;
6966#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
6967template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6968 class t_ARGTYPES_02,
6969 class t_ARGTYPES_03,
6970 class t_ARGTYPES_04,
6971 class t_ARGTYPES_05,
6972 class t_ARGTYPES_06,
6973 class t_ARGTYPES_07,
6974 class t_ARGTYPES_08,
6975 class t_ARGTYPES_09,
6976 class t_ARGTYPES_10>
6977struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6987 > : InvokeResult_ImpUtils {
6991 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6992 myDeclval<t_ARGTYPES_02>(),
6993 myDeclval<t_ARGTYPES_03>(),
6994 myDeclval<t_ARGTYPES_04>(),
6995 myDeclval<t_ARGTYPES_05>(),
6996 myDeclval<t_ARGTYPES_06>(),
6997 myDeclval<t_ARGTYPES_07>(),
6998 myDeclval<t_ARGTYPES_08>(),
6999 myDeclval<t_ARGTYPES_09>(),
7000 myDeclval<t_ARGTYPES_10>()),
7001 InvokeResult_VoidChecker()))
7004 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
7015 t_ARGTYPES_10>::type type;
7019#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
7020template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7021 class t_ARGTYPES_02,
7022 class t_ARGTYPES_03,
7023 class t_ARGTYPES_04,
7024 class t_ARGTYPES_05,
7025 class t_ARGTYPES_06,
7026 class t_ARGTYPES_07,
7027 class t_ARGTYPES_08,
7028 class t_ARGTYPES_09,
7029 class t_ARGTYPES_10,
7030 class t_ARGTYPES_11>
7031struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7042 > : InvokeResult_ImpUtils {
7046 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7047 myDeclval<t_ARGTYPES_02>(),
7048 myDeclval<t_ARGTYPES_03>(),
7049 myDeclval<t_ARGTYPES_04>(),
7050 myDeclval<t_ARGTYPES_05>(),
7051 myDeclval<t_ARGTYPES_06>(),
7052 myDeclval<t_ARGTYPES_07>(),
7053 myDeclval<t_ARGTYPES_08>(),
7054 myDeclval<t_ARGTYPES_09>(),
7055 myDeclval<t_ARGTYPES_10>(),
7056 myDeclval<t_ARGTYPES_11>()),
7057 InvokeResult_VoidChecker()))
7060 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
7072 t_ARGTYPES_11>::type type;
7076#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
7077template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7078 class t_ARGTYPES_02,
7079 class t_ARGTYPES_03,
7080 class t_ARGTYPES_04,
7081 class t_ARGTYPES_05,
7082 class t_ARGTYPES_06,
7083 class t_ARGTYPES_07,
7084 class t_ARGTYPES_08,
7085 class t_ARGTYPES_09,
7086 class t_ARGTYPES_10,
7087 class t_ARGTYPES_11,
7088 class t_ARGTYPES_12>
7089struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7101 > : InvokeResult_ImpUtils {
7105 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7106 myDeclval<t_ARGTYPES_02>(),
7107 myDeclval<t_ARGTYPES_03>(),
7108 myDeclval<t_ARGTYPES_04>(),
7109 myDeclval<t_ARGTYPES_05>(),
7110 myDeclval<t_ARGTYPES_06>(),
7111 myDeclval<t_ARGTYPES_07>(),
7112 myDeclval<t_ARGTYPES_08>(),
7113 myDeclval<t_ARGTYPES_09>(),
7114 myDeclval<t_ARGTYPES_10>(),
7115 myDeclval<t_ARGTYPES_11>(),
7116 myDeclval<t_ARGTYPES_12>()),
7117 InvokeResult_VoidChecker()))
7120 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
7133 t_ARGTYPES_12>::type type;
7137#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
7138template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7139 class t_ARGTYPES_02,
7140 class t_ARGTYPES_03,
7141 class t_ARGTYPES_04,
7142 class t_ARGTYPES_05,
7143 class t_ARGTYPES_06,
7144 class t_ARGTYPES_07,
7145 class t_ARGTYPES_08,
7146 class t_ARGTYPES_09,
7147 class t_ARGTYPES_10,
7148 class t_ARGTYPES_11,
7149 class t_ARGTYPES_12,
7150 class t_ARGTYPES_13>
7151struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7164 > : InvokeResult_ImpUtils {
7168 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7169 myDeclval<t_ARGTYPES_02>(),
7170 myDeclval<t_ARGTYPES_03>(),
7171 myDeclval<t_ARGTYPES_04>(),
7172 myDeclval<t_ARGTYPES_05>(),
7173 myDeclval<t_ARGTYPES_06>(),
7174 myDeclval<t_ARGTYPES_07>(),
7175 myDeclval<t_ARGTYPES_08>(),
7176 myDeclval<t_ARGTYPES_09>(),
7177 myDeclval<t_ARGTYPES_10>(),
7178 myDeclval<t_ARGTYPES_11>(),
7179 myDeclval<t_ARGTYPES_12>(),
7180 myDeclval<t_ARGTYPES_13>()),
7181 InvokeResult_VoidChecker()))
7184 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
7198 t_ARGTYPES_13>::type type;
7205#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
7206#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
7207template <
class t_VOID_TYPE,
class t_FN>
7208struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN> {
7212#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
7213template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01>
7214struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01> {
7218#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
7219template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7220 class t_ARGTYPES_02>
7221struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7226#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
7227template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7228 class t_ARGTYPES_02,
7229 class t_ARGTYPES_03>
7230struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7236#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
7237template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7238 class t_ARGTYPES_02,
7239 class t_ARGTYPES_03,
7240 class t_ARGTYPES_04>
7241struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7248#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
7249template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7250 class t_ARGTYPES_02,
7251 class t_ARGTYPES_03,
7252 class t_ARGTYPES_04,
7253 class t_ARGTYPES_05>
7254struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7262#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
7263template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7264 class t_ARGTYPES_02,
7265 class t_ARGTYPES_03,
7266 class t_ARGTYPES_04,
7267 class t_ARGTYPES_05,
7268 class t_ARGTYPES_06>
7269struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7278#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
7279template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7280 class t_ARGTYPES_02,
7281 class t_ARGTYPES_03,
7282 class t_ARGTYPES_04,
7283 class t_ARGTYPES_05,
7284 class t_ARGTYPES_06,
7285 class t_ARGTYPES_07>
7286struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7296#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
7297template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7298 class t_ARGTYPES_02,
7299 class t_ARGTYPES_03,
7300 class t_ARGTYPES_04,
7301 class t_ARGTYPES_05,
7302 class t_ARGTYPES_06,
7303 class t_ARGTYPES_07,
7304 class t_ARGTYPES_08>
7305struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7316#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
7317template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7318 class t_ARGTYPES_02,
7319 class t_ARGTYPES_03,
7320 class t_ARGTYPES_04,
7321 class t_ARGTYPES_05,
7322 class t_ARGTYPES_06,
7323 class t_ARGTYPES_07,
7324 class t_ARGTYPES_08,
7325 class t_ARGTYPES_09>
7326struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7338#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
7339template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7340 class t_ARGTYPES_02,
7341 class t_ARGTYPES_03,
7342 class t_ARGTYPES_04,
7343 class t_ARGTYPES_05,
7344 class t_ARGTYPES_06,
7345 class t_ARGTYPES_07,
7346 class t_ARGTYPES_08,
7347 class t_ARGTYPES_09,
7348 class t_ARGTYPES_10>
7349struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7362#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
7363template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7364 class t_ARGTYPES_02,
7365 class t_ARGTYPES_03,
7366 class t_ARGTYPES_04,
7367 class t_ARGTYPES_05,
7368 class t_ARGTYPES_06,
7369 class t_ARGTYPES_07,
7370 class t_ARGTYPES_08,
7371 class t_ARGTYPES_09,
7372 class t_ARGTYPES_10,
7373 class t_ARGTYPES_11>
7374struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7388#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
7389template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7390 class t_ARGTYPES_02,
7391 class t_ARGTYPES_03,
7392 class t_ARGTYPES_04,
7393 class t_ARGTYPES_05,
7394 class t_ARGTYPES_06,
7395 class t_ARGTYPES_07,
7396 class t_ARGTYPES_08,
7397 class t_ARGTYPES_09,
7398 class t_ARGTYPES_10,
7399 class t_ARGTYPES_11,
7400 class t_ARGTYPES_12>
7401struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7416#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
7417template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7418 class t_ARGTYPES_02,
7419 class t_ARGTYPES_03,
7420 class t_ARGTYPES_04,
7421 class t_ARGTYPES_05,
7422 class t_ARGTYPES_06,
7423 class t_ARGTYPES_07,
7424 class t_ARGTYPES_08,
7425 class t_ARGTYPES_09,
7426 class t_ARGTYPES_10,
7427 class t_ARGTYPES_11,
7428 class t_ARGTYPES_12,
7429 class t_ARGTYPES_13>
7430struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7447#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
7448template <
class t_FN>
7449struct InvokeResult_FuncPtrImp<
7450 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7452 t_FN> : InvokeResult_ImpUtils {
7455 typedef decltype(myDeclval<t_FN>()()) type;
7459#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
7460template <
class t_FN,
class t_ARGTYPES_01>
7461struct InvokeResult_FuncPtrImp<
7462 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7463 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
7465 t_ARGTYPES_01> : InvokeResult_ImpUtils {
7468 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())) type;
7472#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
7473template <
class t_FN,
class t_ARGTYPES_01,
7474 class t_ARGTYPES_02>
7475struct InvokeResult_FuncPtrImp<
7476 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7477 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7478 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
7481 t_ARGTYPES_02> : InvokeResult_ImpUtils {
7484 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7485 myDeclval<t_ARGTYPES_02>())) type;
7489#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
7490template <
class t_FN,
class t_ARGTYPES_01,
7491 class t_ARGTYPES_02,
7492 class t_ARGTYPES_03>
7493struct InvokeResult_FuncPtrImp<
7494 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7495 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7496 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7497 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
7501 t_ARGTYPES_03> : InvokeResult_ImpUtils {
7504 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7505 myDeclval<t_ARGTYPES_02>(),
7506 myDeclval<t_ARGTYPES_03>())) type;
7510#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
7511template <
class t_FN,
class t_ARGTYPES_01,
7512 class t_ARGTYPES_02,
7513 class t_ARGTYPES_03,
7514 class t_ARGTYPES_04>
7515struct InvokeResult_FuncPtrImp<
7516 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7517 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7518 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7519 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7520 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
7525 t_ARGTYPES_04> : InvokeResult_ImpUtils {
7528 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7529 myDeclval<t_ARGTYPES_02>(),
7530 myDeclval<t_ARGTYPES_03>(),
7531 myDeclval<t_ARGTYPES_04>())) type;
7535#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
7536template <
class t_FN,
class t_ARGTYPES_01,
7537 class t_ARGTYPES_02,
7538 class t_ARGTYPES_03,
7539 class t_ARGTYPES_04,
7540 class t_ARGTYPES_05>
7541struct InvokeResult_FuncPtrImp<
7542 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7543 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7544 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7545 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7546 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7547 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
7553 t_ARGTYPES_05> : InvokeResult_ImpUtils {
7556 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7557 myDeclval<t_ARGTYPES_02>(),
7558 myDeclval<t_ARGTYPES_03>(),
7559 myDeclval<t_ARGTYPES_04>(),
7560 myDeclval<t_ARGTYPES_05>())) type;
7564#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
7565template <
class t_FN,
class t_ARGTYPES_01,
7566 class t_ARGTYPES_02,
7567 class t_ARGTYPES_03,
7568 class t_ARGTYPES_04,
7569 class t_ARGTYPES_05,
7570 class t_ARGTYPES_06>
7571struct InvokeResult_FuncPtrImp<
7572 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7573 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7574 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7575 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7576 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7577 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7578 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
7585 t_ARGTYPES_06> : InvokeResult_ImpUtils {
7588 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7589 myDeclval<t_ARGTYPES_02>(),
7590 myDeclval<t_ARGTYPES_03>(),
7591 myDeclval<t_ARGTYPES_04>(),
7592 myDeclval<t_ARGTYPES_05>(),
7593 myDeclval<t_ARGTYPES_06>())) type;
7597#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
7598template <
class t_FN,
class t_ARGTYPES_01,
7599 class t_ARGTYPES_02,
7600 class t_ARGTYPES_03,
7601 class t_ARGTYPES_04,
7602 class t_ARGTYPES_05,
7603 class t_ARGTYPES_06,
7604 class t_ARGTYPES_07>
7605struct InvokeResult_FuncPtrImp<
7606 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7607 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7608 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7609 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7610 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7611 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7612 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7613 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
7621 t_ARGTYPES_07> : InvokeResult_ImpUtils {
7624 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7625 myDeclval<t_ARGTYPES_02>(),
7626 myDeclval<t_ARGTYPES_03>(),
7627 myDeclval<t_ARGTYPES_04>(),
7628 myDeclval<t_ARGTYPES_05>(),
7629 myDeclval<t_ARGTYPES_06>(),
7630 myDeclval<t_ARGTYPES_07>())) type;
7634#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
7635template <
class t_FN,
class t_ARGTYPES_01,
7636 class t_ARGTYPES_02,
7637 class t_ARGTYPES_03,
7638 class t_ARGTYPES_04,
7639 class t_ARGTYPES_05,
7640 class t_ARGTYPES_06,
7641 class t_ARGTYPES_07,
7642 class t_ARGTYPES_08>
7643struct InvokeResult_FuncPtrImp<
7644 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7645 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7646 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7647 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7648 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7649 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7650 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7651 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7652 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
7661 t_ARGTYPES_08> : InvokeResult_ImpUtils {
7664 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7665 myDeclval<t_ARGTYPES_02>(),
7666 myDeclval<t_ARGTYPES_03>(),
7667 myDeclval<t_ARGTYPES_04>(),
7668 myDeclval<t_ARGTYPES_05>(),
7669 myDeclval<t_ARGTYPES_06>(),
7670 myDeclval<t_ARGTYPES_07>(),
7671 myDeclval<t_ARGTYPES_08>())) type;
7675#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
7676template <
class t_FN,
class t_ARGTYPES_01,
7677 class t_ARGTYPES_02,
7678 class t_ARGTYPES_03,
7679 class t_ARGTYPES_04,
7680 class t_ARGTYPES_05,
7681 class t_ARGTYPES_06,
7682 class t_ARGTYPES_07,
7683 class t_ARGTYPES_08,
7684 class t_ARGTYPES_09>
7685struct InvokeResult_FuncPtrImp<
7686 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7687 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7688 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7689 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7690 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7691 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7692 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7693 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7694 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7695 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
7705 t_ARGTYPES_09> : InvokeResult_ImpUtils {
7708 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7709 myDeclval<t_ARGTYPES_02>(),
7710 myDeclval<t_ARGTYPES_03>(),
7711 myDeclval<t_ARGTYPES_04>(),
7712 myDeclval<t_ARGTYPES_05>(),
7713 myDeclval<t_ARGTYPES_06>(),
7714 myDeclval<t_ARGTYPES_07>(),
7715 myDeclval<t_ARGTYPES_08>(),
7716 myDeclval<t_ARGTYPES_09>())) type;
7720#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
7721template <
class t_FN,
class t_ARGTYPES_01,
7722 class t_ARGTYPES_02,
7723 class t_ARGTYPES_03,
7724 class t_ARGTYPES_04,
7725 class t_ARGTYPES_05,
7726 class t_ARGTYPES_06,
7727 class t_ARGTYPES_07,
7728 class t_ARGTYPES_08,
7729 class t_ARGTYPES_09,
7730 class t_ARGTYPES_10>
7731struct InvokeResult_FuncPtrImp<
7732 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7733 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7734 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7735 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7736 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7737 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7738 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7739 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7740 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7741 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
7742 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
7753 t_ARGTYPES_10> : InvokeResult_ImpUtils {
7756 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7757 myDeclval<t_ARGTYPES_02>(),
7758 myDeclval<t_ARGTYPES_03>(),
7759 myDeclval<t_ARGTYPES_04>(),
7760 myDeclval<t_ARGTYPES_05>(),
7761 myDeclval<t_ARGTYPES_06>(),
7762 myDeclval<t_ARGTYPES_07>(),
7763 myDeclval<t_ARGTYPES_08>(),
7764 myDeclval<t_ARGTYPES_09>(),
7765 myDeclval<t_ARGTYPES_10>())) type;
7769#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
7770template <
class t_FN,
class t_ARGTYPES_01,
7771 class t_ARGTYPES_02,
7772 class t_ARGTYPES_03,
7773 class t_ARGTYPES_04,
7774 class t_ARGTYPES_05,
7775 class t_ARGTYPES_06,
7776 class t_ARGTYPES_07,
7777 class t_ARGTYPES_08,
7778 class t_ARGTYPES_09,
7779 class t_ARGTYPES_10,
7780 class t_ARGTYPES_11>
7781struct InvokeResult_FuncPtrImp<
7782 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7783 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7784 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7785 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7786 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7787 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7788 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7789 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7790 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7791 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
7792 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
7793 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
7805 t_ARGTYPES_11> : InvokeResult_ImpUtils {
7808 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7809 myDeclval<t_ARGTYPES_02>(),
7810 myDeclval<t_ARGTYPES_03>(),
7811 myDeclval<t_ARGTYPES_04>(),
7812 myDeclval<t_ARGTYPES_05>(),
7813 myDeclval<t_ARGTYPES_06>(),
7814 myDeclval<t_ARGTYPES_07>(),
7815 myDeclval<t_ARGTYPES_08>(),
7816 myDeclval<t_ARGTYPES_09>(),
7817 myDeclval<t_ARGTYPES_10>(),
7818 myDeclval<t_ARGTYPES_11>())) type;
7822#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
7823template <
class t_FN,
class t_ARGTYPES_01,
7824 class t_ARGTYPES_02,
7825 class t_ARGTYPES_03,
7826 class t_ARGTYPES_04,
7827 class t_ARGTYPES_05,
7828 class t_ARGTYPES_06,
7829 class t_ARGTYPES_07,
7830 class t_ARGTYPES_08,
7831 class t_ARGTYPES_09,
7832 class t_ARGTYPES_10,
7833 class t_ARGTYPES_11,
7834 class t_ARGTYPES_12>
7835struct InvokeResult_FuncPtrImp<
7836 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7837 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7838 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7839 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7840 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7841 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7842 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7843 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7844 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7845 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
7846 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
7847 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
7848 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
7861 t_ARGTYPES_12> : InvokeResult_ImpUtils {
7864 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7865 myDeclval<t_ARGTYPES_02>(),
7866 myDeclval<t_ARGTYPES_03>(),
7867 myDeclval<t_ARGTYPES_04>(),
7868 myDeclval<t_ARGTYPES_05>(),
7869 myDeclval<t_ARGTYPES_06>(),
7870 myDeclval<t_ARGTYPES_07>(),
7871 myDeclval<t_ARGTYPES_08>(),
7872 myDeclval<t_ARGTYPES_09>(),
7873 myDeclval<t_ARGTYPES_10>(),
7874 myDeclval<t_ARGTYPES_11>(),
7875 myDeclval<t_ARGTYPES_12>())) type;
7879#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
7880template <
class t_FN,
class t_ARGTYPES_01,
7881 class t_ARGTYPES_02,
7882 class t_ARGTYPES_03,
7883 class t_ARGTYPES_04,
7884 class t_ARGTYPES_05,
7885 class t_ARGTYPES_06,
7886 class t_ARGTYPES_07,
7887 class t_ARGTYPES_08,
7888 class t_ARGTYPES_09,
7889 class t_ARGTYPES_10,
7890 class t_ARGTYPES_11,
7891 class t_ARGTYPES_12,
7892 class t_ARGTYPES_13>
7893struct InvokeResult_FuncPtrImp<
7894 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7895 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7896 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7897 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7898 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7899 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7900 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7901 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7902 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7903 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
7904 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
7905 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
7906 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
7907 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
7921 t_ARGTYPES_13> : InvokeResult_ImpUtils {
7924 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7925 myDeclval<t_ARGTYPES_02>(),
7926 myDeclval<t_ARGTYPES_03>(),
7927 myDeclval<t_ARGTYPES_04>(),
7928 myDeclval<t_ARGTYPES_05>(),
7929 myDeclval<t_ARGTYPES_06>(),
7930 myDeclval<t_ARGTYPES_07>(),
7931 myDeclval<t_ARGTYPES_08>(),
7932 myDeclval<t_ARGTYPES_09>(),
7933 myDeclval<t_ARGTYPES_10>(),
7934 myDeclval<t_ARGTYPES_11>(),
7935 myDeclval<t_ARGTYPES_12>(),
7936 myDeclval<t_ARGTYPES_13>())) type;
7941#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
7942template <
class t_VOID_TYPE,
class t_FN>
7943struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN> {
7954#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
7955template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01>
7956struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01> {
7967#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
7968template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7969 class t_ARGTYPES_02>
7970struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7982#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
7983template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7984 class t_ARGTYPES_02,
7985 class t_ARGTYPES_03>
7986struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7999#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
8000template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8001 class t_ARGTYPES_02,
8002 class t_ARGTYPES_03,
8003 class t_ARGTYPES_04>
8004struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8018#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
8019template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8020 class t_ARGTYPES_02,
8021 class t_ARGTYPES_03,
8022 class t_ARGTYPES_04,
8023 class t_ARGTYPES_05>
8024struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8039#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
8040template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8041 class t_ARGTYPES_02,
8042 class t_ARGTYPES_03,
8043 class t_ARGTYPES_04,
8044 class t_ARGTYPES_05,
8045 class t_ARGTYPES_06>
8046struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8062#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
8063template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8064 class t_ARGTYPES_02,
8065 class t_ARGTYPES_03,
8066 class t_ARGTYPES_04,
8067 class t_ARGTYPES_05,
8068 class t_ARGTYPES_06,
8069 class t_ARGTYPES_07>
8070struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8087#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
8088template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8089 class t_ARGTYPES_02,
8090 class t_ARGTYPES_03,
8091 class t_ARGTYPES_04,
8092 class t_ARGTYPES_05,
8093 class t_ARGTYPES_06,
8094 class t_ARGTYPES_07,
8095 class t_ARGTYPES_08>
8096struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8114#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
8115template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8116 class t_ARGTYPES_02,
8117 class t_ARGTYPES_03,
8118 class t_ARGTYPES_04,
8119 class t_ARGTYPES_05,
8120 class t_ARGTYPES_06,
8121 class t_ARGTYPES_07,
8122 class t_ARGTYPES_08,
8123 class t_ARGTYPES_09>
8124struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8143#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
8144template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8145 class t_ARGTYPES_02,
8146 class t_ARGTYPES_03,
8147 class t_ARGTYPES_04,
8148 class t_ARGTYPES_05,
8149 class t_ARGTYPES_06,
8150 class t_ARGTYPES_07,
8151 class t_ARGTYPES_08,
8152 class t_ARGTYPES_09,
8153 class t_ARGTYPES_10>
8154struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8174#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
8175template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8176 class t_ARGTYPES_02,
8177 class t_ARGTYPES_03,
8178 class t_ARGTYPES_04,
8179 class t_ARGTYPES_05,
8180 class t_ARGTYPES_06,
8181 class t_ARGTYPES_07,
8182 class t_ARGTYPES_08,
8183 class t_ARGTYPES_09,
8184 class t_ARGTYPES_10,
8185 class t_ARGTYPES_11>
8186struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8207#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
8208template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8209 class t_ARGTYPES_02,
8210 class t_ARGTYPES_03,
8211 class t_ARGTYPES_04,
8212 class t_ARGTYPES_05,
8213 class t_ARGTYPES_06,
8214 class t_ARGTYPES_07,
8215 class t_ARGTYPES_08,
8216 class t_ARGTYPES_09,
8217 class t_ARGTYPES_10,
8218 class t_ARGTYPES_11,
8219 class t_ARGTYPES_12>
8220struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8242#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
8243template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8244 class t_ARGTYPES_02,
8245 class t_ARGTYPES_03,
8246 class t_ARGTYPES_04,
8247 class t_ARGTYPES_05,
8248 class t_ARGTYPES_06,
8249 class t_ARGTYPES_07,
8250 class t_ARGTYPES_08,
8251 class t_ARGTYPES_09,
8252 class t_ARGTYPES_10,
8253 class t_ARGTYPES_11,
8254 class t_ARGTYPES_12,
8255 class t_ARGTYPES_13>
8256struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8282#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
8283template <
class t_VOID_TYPE,
8284 bool t_ARG1_DERIVES_FROM_CLASS,
8285 bool t_ARG1_IS_REFERENCE_WRAPPER,
8288#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
8289 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
8292#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
8293 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
8296#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
8297 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
8300#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
8301 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
8304#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
8305 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
8308#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
8309 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
8312#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
8313 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
8316#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
8317 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
8320#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
8321 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
8324#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
8325 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
8328#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
8329 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
8332#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
8333 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
8336#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
8337 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
8339 ,
class = BSLS_COMPILERFEATURES_NILT>
8340struct InvokeResult_MemFuncPtrImpDispatch;
8344template <
class t_FN>
8345struct InvokeResult_MemFuncPtrImp<t_FN> {
8348#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
8349template <
class t_FN,
class t_ARG1TYPE>
8350struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE>
8351: InvokeResult_MemFuncPtrImpDispatch<
8354 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8355 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8356 IsReferenceWrapper<typename bsl::remove_const<
8357 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8363#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
8364template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01>
8365struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01>
8366: InvokeResult_MemFuncPtrImpDispatch<
8369 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8370 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8371 IsReferenceWrapper<typename bsl::remove_const<
8372 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8379#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
8380template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8381 class t_ARGTYPES_02>
8382struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8384: InvokeResult_MemFuncPtrImpDispatch<
8387 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8388 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8389 IsReferenceWrapper<typename bsl::remove_const<
8390 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8398#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
8399template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8400 class t_ARGTYPES_02,
8401 class t_ARGTYPES_03>
8402struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8405: InvokeResult_MemFuncPtrImpDispatch<
8408 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8409 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8410 IsReferenceWrapper<typename bsl::remove_const<
8411 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8420#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
8421template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8422 class t_ARGTYPES_02,
8423 class t_ARGTYPES_03,
8424 class t_ARGTYPES_04>
8425struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8429: InvokeResult_MemFuncPtrImpDispatch<
8432 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8433 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8434 IsReferenceWrapper<typename bsl::remove_const<
8435 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8445#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
8446template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8447 class t_ARGTYPES_02,
8448 class t_ARGTYPES_03,
8449 class t_ARGTYPES_04,
8450 class t_ARGTYPES_05>
8451struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8456: InvokeResult_MemFuncPtrImpDispatch<
8459 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8460 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8461 IsReferenceWrapper<typename bsl::remove_const<
8462 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8473#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
8474template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8475 class t_ARGTYPES_02,
8476 class t_ARGTYPES_03,
8477 class t_ARGTYPES_04,
8478 class t_ARGTYPES_05,
8479 class t_ARGTYPES_06>
8480struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8486: InvokeResult_MemFuncPtrImpDispatch<
8489 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8490 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8491 IsReferenceWrapper<typename bsl::remove_const<
8492 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8504#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
8505template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8506 class t_ARGTYPES_02,
8507 class t_ARGTYPES_03,
8508 class t_ARGTYPES_04,
8509 class t_ARGTYPES_05,
8510 class t_ARGTYPES_06,
8511 class t_ARGTYPES_07>
8512struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8519: InvokeResult_MemFuncPtrImpDispatch<
8522 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8523 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8524 IsReferenceWrapper<typename bsl::remove_const<
8525 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8538#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
8539template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8540 class t_ARGTYPES_02,
8541 class t_ARGTYPES_03,
8542 class t_ARGTYPES_04,
8543 class t_ARGTYPES_05,
8544 class t_ARGTYPES_06,
8545 class t_ARGTYPES_07,
8546 class t_ARGTYPES_08>
8547struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8555: InvokeResult_MemFuncPtrImpDispatch<
8558 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8559 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8560 IsReferenceWrapper<typename bsl::remove_const<
8561 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8575#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
8576template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8577 class t_ARGTYPES_02,
8578 class t_ARGTYPES_03,
8579 class t_ARGTYPES_04,
8580 class t_ARGTYPES_05,
8581 class t_ARGTYPES_06,
8582 class t_ARGTYPES_07,
8583 class t_ARGTYPES_08,
8584 class t_ARGTYPES_09>
8585struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8594: InvokeResult_MemFuncPtrImpDispatch<
8597 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8598 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8599 IsReferenceWrapper<typename bsl::remove_const<
8600 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8615#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
8616template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8617 class t_ARGTYPES_02,
8618 class t_ARGTYPES_03,
8619 class t_ARGTYPES_04,
8620 class t_ARGTYPES_05,
8621 class t_ARGTYPES_06,
8622 class t_ARGTYPES_07,
8623 class t_ARGTYPES_08,
8624 class t_ARGTYPES_09,
8625 class t_ARGTYPES_10>
8626struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8636: InvokeResult_MemFuncPtrImpDispatch<
8639 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8640 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8641 IsReferenceWrapper<typename bsl::remove_const<
8642 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8658#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
8659template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8660 class t_ARGTYPES_02,
8661 class t_ARGTYPES_03,
8662 class t_ARGTYPES_04,
8663 class t_ARGTYPES_05,
8664 class t_ARGTYPES_06,
8665 class t_ARGTYPES_07,
8666 class t_ARGTYPES_08,
8667 class t_ARGTYPES_09,
8668 class t_ARGTYPES_10,
8669 class t_ARGTYPES_11>
8670struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8681: InvokeResult_MemFuncPtrImpDispatch<
8684 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8685 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8686 IsReferenceWrapper<typename bsl::remove_const<
8687 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8704#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
8705template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8706 class t_ARGTYPES_02,
8707 class t_ARGTYPES_03,
8708 class t_ARGTYPES_04,
8709 class t_ARGTYPES_05,
8710 class t_ARGTYPES_06,
8711 class t_ARGTYPES_07,
8712 class t_ARGTYPES_08,
8713 class t_ARGTYPES_09,
8714 class t_ARGTYPES_10,
8715 class t_ARGTYPES_11,
8716 class t_ARGTYPES_12>
8717struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8729: InvokeResult_MemFuncPtrImpDispatch<
8732 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8733 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8734 IsReferenceWrapper<typename bsl::remove_const<
8735 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8753#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
8754template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8755 class t_ARGTYPES_02,
8756 class t_ARGTYPES_03,
8757 class t_ARGTYPES_04,
8758 class t_ARGTYPES_05,
8759 class t_ARGTYPES_06,
8760 class t_ARGTYPES_07,
8761 class t_ARGTYPES_08,
8762 class t_ARGTYPES_09,
8763 class t_ARGTYPES_10,
8764 class t_ARGTYPES_11,
8765 class t_ARGTYPES_12,
8766 class t_ARGTYPES_13>
8767struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8780: InvokeResult_MemFuncPtrImpDispatch<
8783 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8784 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8785 IsReferenceWrapper<typename bsl::remove_const<
8786 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8806#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
8807template <
class t_FN>
8808struct InvokeResult_MemFuncPtrImp<t_FN> {
8810 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8819#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
8820template <
class t_FN,
class t_ARGTYPES_01>
8821struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01> {
8823 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8832#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
8833template <
class t_FN,
class t_ARGTYPES_01,
8834 class t_ARGTYPES_02>
8835struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8838 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8847#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
8848template <
class t_FN,
class t_ARGTYPES_01,
8849 class t_ARGTYPES_02,
8850 class t_ARGTYPES_03>
8851struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8855 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8864#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
8865template <
class t_FN,
class t_ARGTYPES_01,
8866 class t_ARGTYPES_02,
8867 class t_ARGTYPES_03,
8868 class t_ARGTYPES_04>
8869struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8874 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8883#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
8884template <
class t_FN,
class t_ARGTYPES_01,
8885 class t_ARGTYPES_02,
8886 class t_ARGTYPES_03,
8887 class t_ARGTYPES_04,
8888 class t_ARGTYPES_05>
8889struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8895 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8904#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
8905template <
class t_FN,
class t_ARGTYPES_01,
8906 class t_ARGTYPES_02,
8907 class t_ARGTYPES_03,
8908 class t_ARGTYPES_04,
8909 class t_ARGTYPES_05,
8910 class t_ARGTYPES_06>
8911struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8918 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8927#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
8928template <
class t_FN,
class t_ARGTYPES_01,
8929 class t_ARGTYPES_02,
8930 class t_ARGTYPES_03,
8931 class t_ARGTYPES_04,
8932 class t_ARGTYPES_05,
8933 class t_ARGTYPES_06,
8934 class t_ARGTYPES_07>
8935struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8943 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8952#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
8953template <
class t_FN,
class t_ARGTYPES_01,
8954 class t_ARGTYPES_02,
8955 class t_ARGTYPES_03,
8956 class t_ARGTYPES_04,
8957 class t_ARGTYPES_05,
8958 class t_ARGTYPES_06,
8959 class t_ARGTYPES_07,
8960 class t_ARGTYPES_08>
8961struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8970 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8979#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
8980template <
class t_FN,
class t_ARGTYPES_01,
8981 class t_ARGTYPES_02,
8982 class t_ARGTYPES_03,
8983 class t_ARGTYPES_04,
8984 class t_ARGTYPES_05,
8985 class t_ARGTYPES_06,
8986 class t_ARGTYPES_07,
8987 class t_ARGTYPES_08,
8988 class t_ARGTYPES_09>
8989struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8999 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9008#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
9009template <
class t_FN,
class t_ARGTYPES_01,
9010 class t_ARGTYPES_02,
9011 class t_ARGTYPES_03,
9012 class t_ARGTYPES_04,
9013 class t_ARGTYPES_05,
9014 class t_ARGTYPES_06,
9015 class t_ARGTYPES_07,
9016 class t_ARGTYPES_08,
9017 class t_ARGTYPES_09,
9018 class t_ARGTYPES_10>
9019struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
9030 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9039#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
9040template <
class t_FN,
class t_ARGTYPES_01,
9041 class t_ARGTYPES_02,
9042 class t_ARGTYPES_03,
9043 class t_ARGTYPES_04,
9044 class t_ARGTYPES_05,
9045 class t_ARGTYPES_06,
9046 class t_ARGTYPES_07,
9047 class t_ARGTYPES_08,
9048 class t_ARGTYPES_09,
9049 class t_ARGTYPES_10,
9050 class t_ARGTYPES_11>
9051struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
9063 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9072#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
9073template <
class t_FN,
class t_ARGTYPES_01,
9074 class t_ARGTYPES_02,
9075 class t_ARGTYPES_03,
9076 class t_ARGTYPES_04,
9077 class t_ARGTYPES_05,
9078 class t_ARGTYPES_06,
9079 class t_ARGTYPES_07,
9080 class t_ARGTYPES_08,
9081 class t_ARGTYPES_09,
9082 class t_ARGTYPES_10,
9083 class t_ARGTYPES_11,
9084 class t_ARGTYPES_12>
9085struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
9098 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9107#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
9108template <
class t_FN,
class t_ARGTYPES_01,
9109 class t_ARGTYPES_02,
9110 class t_ARGTYPES_03,
9111 class t_ARGTYPES_04,
9112 class t_ARGTYPES_05,
9113 class t_ARGTYPES_06,
9114 class t_ARGTYPES_07,
9115 class t_ARGTYPES_08,
9116 class t_ARGTYPES_09,
9117 class t_ARGTYPES_10,
9118 class t_ARGTYPES_11,
9119 class t_ARGTYPES_12,
9120 class t_ARGTYPES_13>
9121struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
9135 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9147#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
9148#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
9149template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9150 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE>
9151struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE> {
9155#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
9156template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9157 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9158 class t_ARGTYPES_01>
9159struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9164#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
9165template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9166 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9167 class t_ARGTYPES_01,
9168 class t_ARGTYPES_02>
9169struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9175#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
9176template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9177 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9178 class t_ARGTYPES_01,
9179 class t_ARGTYPES_02,
9180 class t_ARGTYPES_03>
9181struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9188#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
9189template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9190 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9191 class t_ARGTYPES_01,
9192 class t_ARGTYPES_02,
9193 class t_ARGTYPES_03,
9194 class t_ARGTYPES_04>
9195struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9203#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
9204template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9205 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9206 class t_ARGTYPES_01,
9207 class t_ARGTYPES_02,
9208 class t_ARGTYPES_03,
9209 class t_ARGTYPES_04,
9210 class t_ARGTYPES_05>
9211struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9220#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
9221template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9222 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9223 class t_ARGTYPES_01,
9224 class t_ARGTYPES_02,
9225 class t_ARGTYPES_03,
9226 class t_ARGTYPES_04,
9227 class t_ARGTYPES_05,
9228 class t_ARGTYPES_06>
9229struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9239#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
9240template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9241 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9242 class t_ARGTYPES_01,
9243 class t_ARGTYPES_02,
9244 class t_ARGTYPES_03,
9245 class t_ARGTYPES_04,
9246 class t_ARGTYPES_05,
9247 class t_ARGTYPES_06,
9248 class t_ARGTYPES_07>
9249struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9260#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
9261template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9262 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9263 class t_ARGTYPES_01,
9264 class t_ARGTYPES_02,
9265 class t_ARGTYPES_03,
9266 class t_ARGTYPES_04,
9267 class t_ARGTYPES_05,
9268 class t_ARGTYPES_06,
9269 class t_ARGTYPES_07,
9270 class t_ARGTYPES_08>
9271struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9283#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
9284template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9285 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9286 class t_ARGTYPES_01,
9287 class t_ARGTYPES_02,
9288 class t_ARGTYPES_03,
9289 class t_ARGTYPES_04,
9290 class t_ARGTYPES_05,
9291 class t_ARGTYPES_06,
9292 class t_ARGTYPES_07,
9293 class t_ARGTYPES_08,
9294 class t_ARGTYPES_09>
9295struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9308#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
9309template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9310 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9311 class t_ARGTYPES_01,
9312 class t_ARGTYPES_02,
9313 class t_ARGTYPES_03,
9314 class t_ARGTYPES_04,
9315 class t_ARGTYPES_05,
9316 class t_ARGTYPES_06,
9317 class t_ARGTYPES_07,
9318 class t_ARGTYPES_08,
9319 class t_ARGTYPES_09,
9320 class t_ARGTYPES_10>
9321struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9335#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
9336template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9337 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9338 class t_ARGTYPES_01,
9339 class t_ARGTYPES_02,
9340 class t_ARGTYPES_03,
9341 class t_ARGTYPES_04,
9342 class t_ARGTYPES_05,
9343 class t_ARGTYPES_06,
9344 class t_ARGTYPES_07,
9345 class t_ARGTYPES_08,
9346 class t_ARGTYPES_09,
9347 class t_ARGTYPES_10,
9348 class t_ARGTYPES_11>
9349struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9364#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
9365template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9366 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9367 class t_ARGTYPES_01,
9368 class t_ARGTYPES_02,
9369 class t_ARGTYPES_03,
9370 class t_ARGTYPES_04,
9371 class t_ARGTYPES_05,
9372 class t_ARGTYPES_06,
9373 class t_ARGTYPES_07,
9374 class t_ARGTYPES_08,
9375 class t_ARGTYPES_09,
9376 class t_ARGTYPES_10,
9377 class t_ARGTYPES_11,
9378 class t_ARGTYPES_12>
9379struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9395#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
9396template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9397 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9398 class t_ARGTYPES_01,
9399 class t_ARGTYPES_02,
9400 class t_ARGTYPES_03,
9401 class t_ARGTYPES_04,
9402 class t_ARGTYPES_05,
9403 class t_ARGTYPES_06,
9404 class t_ARGTYPES_07,
9405 class t_ARGTYPES_08,
9406 class t_ARGTYPES_09,
9407 class t_ARGTYPES_10,
9408 class t_ARGTYPES_11,
9409 class t_ARGTYPES_12,
9410 class t_ARGTYPES_13>
9411struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9429#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
9430template <
class t_FN,
class t_ARG1TYPE>
9431struct InvokeResult_MemFuncPtrImpDispatch<
9432 typename
bslmf::VoidType<
9433 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9434 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9439 t_ARG1TYPE> : InvokeResult_ImpUtils {
9442 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9443 myDeclval<t_FN>())()) type;
9447#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
9448template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01>
9449struct InvokeResult_MemFuncPtrImpDispatch<
9450 typename
bslmf::VoidType<
9451 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9452 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9453 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
9458 t_ARGTYPES_01> : InvokeResult_ImpUtils {
9461 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9462 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>())) type;
9466#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
9467template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9468 class t_ARGTYPES_02>
9469struct InvokeResult_MemFuncPtrImpDispatch<
9470 typename
bslmf::VoidType<
9471 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9472 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9473 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9474 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
9480 t_ARGTYPES_02> : InvokeResult_ImpUtils {
9483 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9484 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9485 myDeclval<t_ARGTYPES_02>())) type;
9489#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
9490template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9491 class t_ARGTYPES_02,
9492 class t_ARGTYPES_03>
9493struct InvokeResult_MemFuncPtrImpDispatch<
9494 typename
bslmf::VoidType<
9495 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9496 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9497 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9498 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9499 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
9506 t_ARGTYPES_03> : InvokeResult_ImpUtils {
9509 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9510 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9511 myDeclval<t_ARGTYPES_02>(),
9512 myDeclval<t_ARGTYPES_03>())) type;
9516#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
9517template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9518 class t_ARGTYPES_02,
9519 class t_ARGTYPES_03,
9520 class t_ARGTYPES_04>
9521struct InvokeResult_MemFuncPtrImpDispatch<
9522 typename
bslmf::VoidType<
9523 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9524 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9525 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9526 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9527 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9528 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
9536 t_ARGTYPES_04> : InvokeResult_ImpUtils {
9539 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9540 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9541 myDeclval<t_ARGTYPES_02>(),
9542 myDeclval<t_ARGTYPES_03>(),
9543 myDeclval<t_ARGTYPES_04>())) type;
9547#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
9548template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9549 class t_ARGTYPES_02,
9550 class t_ARGTYPES_03,
9551 class t_ARGTYPES_04,
9552 class t_ARGTYPES_05>
9553struct InvokeResult_MemFuncPtrImpDispatch<
9554 typename
bslmf::VoidType<
9555 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9556 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9557 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9558 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9559 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9560 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9561 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
9570 t_ARGTYPES_05> : InvokeResult_ImpUtils {
9573 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9574 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9575 myDeclval<t_ARGTYPES_02>(),
9576 myDeclval<t_ARGTYPES_03>(),
9577 myDeclval<t_ARGTYPES_04>(),
9578 myDeclval<t_ARGTYPES_05>())) type;
9582#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
9583template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9584 class t_ARGTYPES_02,
9585 class t_ARGTYPES_03,
9586 class t_ARGTYPES_04,
9587 class t_ARGTYPES_05,
9588 class t_ARGTYPES_06>
9589struct InvokeResult_MemFuncPtrImpDispatch<
9590 typename
bslmf::VoidType<
9591 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9592 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9593 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9594 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9595 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9596 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9597 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9598 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
9608 t_ARGTYPES_06> : InvokeResult_ImpUtils {
9611 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9612 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9613 myDeclval<t_ARGTYPES_02>(),
9614 myDeclval<t_ARGTYPES_03>(),
9615 myDeclval<t_ARGTYPES_04>(),
9616 myDeclval<t_ARGTYPES_05>(),
9617 myDeclval<t_ARGTYPES_06>())) type;
9621#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
9622template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9623 class t_ARGTYPES_02,
9624 class t_ARGTYPES_03,
9625 class t_ARGTYPES_04,
9626 class t_ARGTYPES_05,
9627 class t_ARGTYPES_06,
9628 class t_ARGTYPES_07>
9629struct InvokeResult_MemFuncPtrImpDispatch<
9630 typename
bslmf::VoidType<
9631 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9632 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9633 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9634 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9635 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9636 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9637 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9638 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9639 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
9650 t_ARGTYPES_07> : InvokeResult_ImpUtils {
9653 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9654 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9655 myDeclval<t_ARGTYPES_02>(),
9656 myDeclval<t_ARGTYPES_03>(),
9657 myDeclval<t_ARGTYPES_04>(),
9658 myDeclval<t_ARGTYPES_05>(),
9659 myDeclval<t_ARGTYPES_06>(),
9660 myDeclval<t_ARGTYPES_07>())) type;
9664#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
9665template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9666 class t_ARGTYPES_02,
9667 class t_ARGTYPES_03,
9668 class t_ARGTYPES_04,
9669 class t_ARGTYPES_05,
9670 class t_ARGTYPES_06,
9671 class t_ARGTYPES_07,
9672 class t_ARGTYPES_08>
9673struct InvokeResult_MemFuncPtrImpDispatch<
9674 typename
bslmf::VoidType<
9675 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9676 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9677 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9678 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9679 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9680 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9681 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9682 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9683 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9684 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
9696 t_ARGTYPES_08> : InvokeResult_ImpUtils {
9699 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9700 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9701 myDeclval<t_ARGTYPES_02>(),
9702 myDeclval<t_ARGTYPES_03>(),
9703 myDeclval<t_ARGTYPES_04>(),
9704 myDeclval<t_ARGTYPES_05>(),
9705 myDeclval<t_ARGTYPES_06>(),
9706 myDeclval<t_ARGTYPES_07>(),
9707 myDeclval<t_ARGTYPES_08>())) type;
9711#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
9712template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9713 class t_ARGTYPES_02,
9714 class t_ARGTYPES_03,
9715 class t_ARGTYPES_04,
9716 class t_ARGTYPES_05,
9717 class t_ARGTYPES_06,
9718 class t_ARGTYPES_07,
9719 class t_ARGTYPES_08,
9720 class t_ARGTYPES_09>
9721struct InvokeResult_MemFuncPtrImpDispatch<
9722 typename
bslmf::VoidType<
9723 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9724 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9725 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9726 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9727 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9728 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9729 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9730 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9731 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9732 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9733 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
9746 t_ARGTYPES_09> : InvokeResult_ImpUtils {
9749 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9750 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9751 myDeclval<t_ARGTYPES_02>(),
9752 myDeclval<t_ARGTYPES_03>(),
9753 myDeclval<t_ARGTYPES_04>(),
9754 myDeclval<t_ARGTYPES_05>(),
9755 myDeclval<t_ARGTYPES_06>(),
9756 myDeclval<t_ARGTYPES_07>(),
9757 myDeclval<t_ARGTYPES_08>(),
9758 myDeclval<t_ARGTYPES_09>())) type;
9762#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
9763template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9764 class t_ARGTYPES_02,
9765 class t_ARGTYPES_03,
9766 class t_ARGTYPES_04,
9767 class t_ARGTYPES_05,
9768 class t_ARGTYPES_06,
9769 class t_ARGTYPES_07,
9770 class t_ARGTYPES_08,
9771 class t_ARGTYPES_09,
9772 class t_ARGTYPES_10>
9773struct InvokeResult_MemFuncPtrImpDispatch<
9774 typename
bslmf::VoidType<
9775 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9776 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9777 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9778 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9779 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9780 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9781 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9782 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9783 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9784 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9785 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
9786 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
9800 t_ARGTYPES_10> : InvokeResult_ImpUtils {
9803 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9804 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9805 myDeclval<t_ARGTYPES_02>(),
9806 myDeclval<t_ARGTYPES_03>(),
9807 myDeclval<t_ARGTYPES_04>(),
9808 myDeclval<t_ARGTYPES_05>(),
9809 myDeclval<t_ARGTYPES_06>(),
9810 myDeclval<t_ARGTYPES_07>(),
9811 myDeclval<t_ARGTYPES_08>(),
9812 myDeclval<t_ARGTYPES_09>(),
9813 myDeclval<t_ARGTYPES_10>())) type;
9817#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
9818template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9819 class t_ARGTYPES_02,
9820 class t_ARGTYPES_03,
9821 class t_ARGTYPES_04,
9822 class t_ARGTYPES_05,
9823 class t_ARGTYPES_06,
9824 class t_ARGTYPES_07,
9825 class t_ARGTYPES_08,
9826 class t_ARGTYPES_09,
9827 class t_ARGTYPES_10,
9828 class t_ARGTYPES_11>
9829struct InvokeResult_MemFuncPtrImpDispatch<
9830 typename
bslmf::VoidType<
9831 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9832 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9833 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9834 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9835 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9836 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9837 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9838 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9839 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9840 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9841 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
9842 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
9843 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
9858 t_ARGTYPES_11> : InvokeResult_ImpUtils {
9861 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9862 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9863 myDeclval<t_ARGTYPES_02>(),
9864 myDeclval<t_ARGTYPES_03>(),
9865 myDeclval<t_ARGTYPES_04>(),
9866 myDeclval<t_ARGTYPES_05>(),
9867 myDeclval<t_ARGTYPES_06>(),
9868 myDeclval<t_ARGTYPES_07>(),
9869 myDeclval<t_ARGTYPES_08>(),
9870 myDeclval<t_ARGTYPES_09>(),
9871 myDeclval<t_ARGTYPES_10>(),
9872 myDeclval<t_ARGTYPES_11>())) type;
9876#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
9877template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9878 class t_ARGTYPES_02,
9879 class t_ARGTYPES_03,
9880 class t_ARGTYPES_04,
9881 class t_ARGTYPES_05,
9882 class t_ARGTYPES_06,
9883 class t_ARGTYPES_07,
9884 class t_ARGTYPES_08,
9885 class t_ARGTYPES_09,
9886 class t_ARGTYPES_10,
9887 class t_ARGTYPES_11,
9888 class t_ARGTYPES_12>
9889struct InvokeResult_MemFuncPtrImpDispatch<
9890 typename
bslmf::VoidType<
9891 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9892 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9893 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9894 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9895 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9896 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9897 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9898 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9899 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9900 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9901 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
9902 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
9903 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
9904 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
9920 t_ARGTYPES_12> : InvokeResult_ImpUtils {
9923 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9924 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9925 myDeclval<t_ARGTYPES_02>(),
9926 myDeclval<t_ARGTYPES_03>(),
9927 myDeclval<t_ARGTYPES_04>(),
9928 myDeclval<t_ARGTYPES_05>(),
9929 myDeclval<t_ARGTYPES_06>(),
9930 myDeclval<t_ARGTYPES_07>(),
9931 myDeclval<t_ARGTYPES_08>(),
9932 myDeclval<t_ARGTYPES_09>(),
9933 myDeclval<t_ARGTYPES_10>(),
9934 myDeclval<t_ARGTYPES_11>(),
9935 myDeclval<t_ARGTYPES_12>())) type;
9939#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
9940template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9941 class t_ARGTYPES_02,
9942 class t_ARGTYPES_03,
9943 class t_ARGTYPES_04,
9944 class t_ARGTYPES_05,
9945 class t_ARGTYPES_06,
9946 class t_ARGTYPES_07,
9947 class t_ARGTYPES_08,
9948 class t_ARGTYPES_09,
9949 class t_ARGTYPES_10,
9950 class t_ARGTYPES_11,
9951 class t_ARGTYPES_12,
9952 class t_ARGTYPES_13>
9953struct InvokeResult_MemFuncPtrImpDispatch<
9954 typename
bslmf::VoidType<
9955 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9956 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9957 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9958 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9959 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9960 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9961 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9962 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9963 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9964 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9965 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
9966 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
9967 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
9968 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
9969 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
9986 t_ARGTYPES_13> : InvokeResult_ImpUtils {
9989 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9990 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9991 myDeclval<t_ARGTYPES_02>(),
9992 myDeclval<t_ARGTYPES_03>(),
9993 myDeclval<t_ARGTYPES_04>(),
9994 myDeclval<t_ARGTYPES_05>(),
9995 myDeclval<t_ARGTYPES_06>(),
9996 myDeclval<t_ARGTYPES_07>(),
9997 myDeclval<t_ARGTYPES_08>(),
9998 myDeclval<t_ARGTYPES_09>(),
9999 myDeclval<t_ARGTYPES_10>(),
10000 myDeclval<t_ARGTYPES_11>(),
10001 myDeclval<t_ARGTYPES_12>(),
10002 myDeclval<t_ARGTYPES_13>())) type;
10007#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
10008template <
class t_FN,
class t_ARG1TYPE>
10009struct InvokeResult_MemFuncPtrImpDispatch<
10010 typename
bslmf::VoidType<
10011 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10012 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10017 t_ARG1TYPE> : InvokeResult_ImpUtils {
10020 typedef decltype((myDeclval<t_ARG1TYPE>().*
10021 myDeclval<t_FN>())()) type;
10025#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
10026template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01>
10027struct InvokeResult_MemFuncPtrImpDispatch<
10028 typename
bslmf::VoidType<
10029 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10030 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10031 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
10036 t_ARGTYPES_01> : InvokeResult_ImpUtils {
10039 typedef decltype((myDeclval<t_ARG1TYPE>().*
10040 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>())) type;
10044#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
10045template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10046 class t_ARGTYPES_02>
10047struct InvokeResult_MemFuncPtrImpDispatch<
10048 typename
bslmf::VoidType<
10049 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10050 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10051 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10052 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
10058 t_ARGTYPES_02> : InvokeResult_ImpUtils {
10061 typedef decltype((myDeclval<t_ARG1TYPE>().*
10062 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10063 myDeclval<t_ARGTYPES_02>())) type;
10067#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
10068template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10069 class t_ARGTYPES_02,
10070 class t_ARGTYPES_03>
10071struct InvokeResult_MemFuncPtrImpDispatch<
10072 typename
bslmf::VoidType<
10073 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10074 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10075 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10076 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10077 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
10084 t_ARGTYPES_03> : InvokeResult_ImpUtils {
10087 typedef decltype((myDeclval<t_ARG1TYPE>().*
10088 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10089 myDeclval<t_ARGTYPES_02>(),
10090 myDeclval<t_ARGTYPES_03>())) type;
10094#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
10095template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10096 class t_ARGTYPES_02,
10097 class t_ARGTYPES_03,
10098 class t_ARGTYPES_04>
10099struct InvokeResult_MemFuncPtrImpDispatch<
10100 typename
bslmf::VoidType<
10101 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10102 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10103 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10104 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10105 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10106 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
10114 t_ARGTYPES_04> : InvokeResult_ImpUtils {
10117 typedef decltype((myDeclval<t_ARG1TYPE>().*
10118 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10119 myDeclval<t_ARGTYPES_02>(),
10120 myDeclval<t_ARGTYPES_03>(),
10121 myDeclval<t_ARGTYPES_04>())) type;
10125#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
10126template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10127 class t_ARGTYPES_02,
10128 class t_ARGTYPES_03,
10129 class t_ARGTYPES_04,
10130 class t_ARGTYPES_05>
10131struct InvokeResult_MemFuncPtrImpDispatch<
10132 typename
bslmf::VoidType<
10133 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10134 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10135 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10136 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10137 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10138 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10139 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
10148 t_ARGTYPES_05> : InvokeResult_ImpUtils {
10151 typedef decltype((myDeclval<t_ARG1TYPE>().*
10152 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10153 myDeclval<t_ARGTYPES_02>(),
10154 myDeclval<t_ARGTYPES_03>(),
10155 myDeclval<t_ARGTYPES_04>(),
10156 myDeclval<t_ARGTYPES_05>())) type;
10160#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
10161template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10162 class t_ARGTYPES_02,
10163 class t_ARGTYPES_03,
10164 class t_ARGTYPES_04,
10165 class t_ARGTYPES_05,
10166 class t_ARGTYPES_06>
10167struct InvokeResult_MemFuncPtrImpDispatch<
10168 typename
bslmf::VoidType<
10169 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10170 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10171 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10172 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10173 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10174 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10175 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10176 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
10186 t_ARGTYPES_06> : InvokeResult_ImpUtils {
10189 typedef decltype((myDeclval<t_ARG1TYPE>().*
10190 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10191 myDeclval<t_ARGTYPES_02>(),
10192 myDeclval<t_ARGTYPES_03>(),
10193 myDeclval<t_ARGTYPES_04>(),
10194 myDeclval<t_ARGTYPES_05>(),
10195 myDeclval<t_ARGTYPES_06>())) type;
10199#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
10200template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10201 class t_ARGTYPES_02,
10202 class t_ARGTYPES_03,
10203 class t_ARGTYPES_04,
10204 class t_ARGTYPES_05,
10205 class t_ARGTYPES_06,
10206 class t_ARGTYPES_07>
10207struct InvokeResult_MemFuncPtrImpDispatch<
10208 typename
bslmf::VoidType<
10209 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10210 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10211 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10212 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10213 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10214 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10215 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10216 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10217 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
10228 t_ARGTYPES_07> : InvokeResult_ImpUtils {
10231 typedef decltype((myDeclval<t_ARG1TYPE>().*
10232 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10233 myDeclval<t_ARGTYPES_02>(),
10234 myDeclval<t_ARGTYPES_03>(),
10235 myDeclval<t_ARGTYPES_04>(),
10236 myDeclval<t_ARGTYPES_05>(),
10237 myDeclval<t_ARGTYPES_06>(),
10238 myDeclval<t_ARGTYPES_07>())) type;
10242#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
10243template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10244 class t_ARGTYPES_02,
10245 class t_ARGTYPES_03,
10246 class t_ARGTYPES_04,
10247 class t_ARGTYPES_05,
10248 class t_ARGTYPES_06,
10249 class t_ARGTYPES_07,
10250 class t_ARGTYPES_08>
10251struct InvokeResult_MemFuncPtrImpDispatch<
10252 typename
bslmf::VoidType<
10253 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10254 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10255 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10256 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10257 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10258 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10259 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10260 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10261 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10262 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
10274 t_ARGTYPES_08> : InvokeResult_ImpUtils {
10277 typedef decltype((myDeclval<t_ARG1TYPE>().*
10278 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10279 myDeclval<t_ARGTYPES_02>(),
10280 myDeclval<t_ARGTYPES_03>(),
10281 myDeclval<t_ARGTYPES_04>(),
10282 myDeclval<t_ARGTYPES_05>(),
10283 myDeclval<t_ARGTYPES_06>(),
10284 myDeclval<t_ARGTYPES_07>(),
10285 myDeclval<t_ARGTYPES_08>())) type;
10289#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
10290template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10291 class t_ARGTYPES_02,
10292 class t_ARGTYPES_03,
10293 class t_ARGTYPES_04,
10294 class t_ARGTYPES_05,
10295 class t_ARGTYPES_06,
10296 class t_ARGTYPES_07,
10297 class t_ARGTYPES_08,
10298 class t_ARGTYPES_09>
10299struct InvokeResult_MemFuncPtrImpDispatch<
10300 typename
bslmf::VoidType<
10301 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10302 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10303 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10304 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10305 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10306 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10307 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10308 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10309 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10310 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10311 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
10324 t_ARGTYPES_09> : InvokeResult_ImpUtils {
10327 typedef decltype((myDeclval<t_ARG1TYPE>().*
10328 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10329 myDeclval<t_ARGTYPES_02>(),
10330 myDeclval<t_ARGTYPES_03>(),
10331 myDeclval<t_ARGTYPES_04>(),
10332 myDeclval<t_ARGTYPES_05>(),
10333 myDeclval<t_ARGTYPES_06>(),
10334 myDeclval<t_ARGTYPES_07>(),
10335 myDeclval<t_ARGTYPES_08>(),
10336 myDeclval<t_ARGTYPES_09>())) type;
10340#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
10341template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10342 class t_ARGTYPES_02,
10343 class t_ARGTYPES_03,
10344 class t_ARGTYPES_04,
10345 class t_ARGTYPES_05,
10346 class t_ARGTYPES_06,
10347 class t_ARGTYPES_07,
10348 class t_ARGTYPES_08,
10349 class t_ARGTYPES_09,
10350 class t_ARGTYPES_10>
10351struct InvokeResult_MemFuncPtrImpDispatch<
10352 typename
bslmf::VoidType<
10353 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10354 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10355 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10356 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10357 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10358 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10359 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10360 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10361 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10362 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10363 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10364 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
10378 t_ARGTYPES_10> : InvokeResult_ImpUtils {
10381 typedef decltype((myDeclval<t_ARG1TYPE>().*
10382 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10383 myDeclval<t_ARGTYPES_02>(),
10384 myDeclval<t_ARGTYPES_03>(),
10385 myDeclval<t_ARGTYPES_04>(),
10386 myDeclval<t_ARGTYPES_05>(),
10387 myDeclval<t_ARGTYPES_06>(),
10388 myDeclval<t_ARGTYPES_07>(),
10389 myDeclval<t_ARGTYPES_08>(),
10390 myDeclval<t_ARGTYPES_09>(),
10391 myDeclval<t_ARGTYPES_10>())) type;
10395#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
10396template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10397 class t_ARGTYPES_02,
10398 class t_ARGTYPES_03,
10399 class t_ARGTYPES_04,
10400 class t_ARGTYPES_05,
10401 class t_ARGTYPES_06,
10402 class t_ARGTYPES_07,
10403 class t_ARGTYPES_08,
10404 class t_ARGTYPES_09,
10405 class t_ARGTYPES_10,
10406 class t_ARGTYPES_11>
10407struct InvokeResult_MemFuncPtrImpDispatch<
10408 typename
bslmf::VoidType<
10409 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10410 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10411 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10412 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10413 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10414 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10415 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10416 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10417 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10418 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10419 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10420 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
10421 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
10436 t_ARGTYPES_11> : InvokeResult_ImpUtils {
10439 typedef decltype((myDeclval<t_ARG1TYPE>().*
10440 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10441 myDeclval<t_ARGTYPES_02>(),
10442 myDeclval<t_ARGTYPES_03>(),
10443 myDeclval<t_ARGTYPES_04>(),
10444 myDeclval<t_ARGTYPES_05>(),
10445 myDeclval<t_ARGTYPES_06>(),
10446 myDeclval<t_ARGTYPES_07>(),
10447 myDeclval<t_ARGTYPES_08>(),
10448 myDeclval<t_ARGTYPES_09>(),
10449 myDeclval<t_ARGTYPES_10>(),
10450 myDeclval<t_ARGTYPES_11>())) type;
10454#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
10455template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10456 class t_ARGTYPES_02,
10457 class t_ARGTYPES_03,
10458 class t_ARGTYPES_04,
10459 class t_ARGTYPES_05,
10460 class t_ARGTYPES_06,
10461 class t_ARGTYPES_07,
10462 class t_ARGTYPES_08,
10463 class t_ARGTYPES_09,
10464 class t_ARGTYPES_10,
10465 class t_ARGTYPES_11,
10466 class t_ARGTYPES_12>
10467struct InvokeResult_MemFuncPtrImpDispatch<
10468 typename
bslmf::VoidType<
10469 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10470 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10471 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10472 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10473 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10474 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10475 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10476 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10477 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10478 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10479 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10480 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
10481 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
10482 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
10498 t_ARGTYPES_12> : InvokeResult_ImpUtils {
10501 typedef decltype((myDeclval<t_ARG1TYPE>().*
10502 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10503 myDeclval<t_ARGTYPES_02>(),
10504 myDeclval<t_ARGTYPES_03>(),
10505 myDeclval<t_ARGTYPES_04>(),
10506 myDeclval<t_ARGTYPES_05>(),
10507 myDeclval<t_ARGTYPES_06>(),
10508 myDeclval<t_ARGTYPES_07>(),
10509 myDeclval<t_ARGTYPES_08>(),
10510 myDeclval<t_ARGTYPES_09>(),
10511 myDeclval<t_ARGTYPES_10>(),
10512 myDeclval<t_ARGTYPES_11>(),
10513 myDeclval<t_ARGTYPES_12>())) type;
10517#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
10518template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10519 class t_ARGTYPES_02,
10520 class t_ARGTYPES_03,
10521 class t_ARGTYPES_04,
10522 class t_ARGTYPES_05,
10523 class t_ARGTYPES_06,
10524 class t_ARGTYPES_07,
10525 class t_ARGTYPES_08,
10526 class t_ARGTYPES_09,
10527 class t_ARGTYPES_10,
10528 class t_ARGTYPES_11,
10529 class t_ARGTYPES_12,
10530 class t_ARGTYPES_13>
10531struct InvokeResult_MemFuncPtrImpDispatch<
10532 typename
bslmf::VoidType<
10533 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10534 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10535 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10536 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10537 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10538 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10539 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10540 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10541 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10542 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10543 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10544 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
10545 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
10546 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
10547 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
10564 t_ARGTYPES_13> : InvokeResult_ImpUtils {
10567 typedef decltype((myDeclval<t_ARG1TYPE>().*
10568 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10569 myDeclval<t_ARGTYPES_02>(),
10570 myDeclval<t_ARGTYPES_03>(),
10571 myDeclval<t_ARGTYPES_04>(),
10572 myDeclval<t_ARGTYPES_05>(),
10573 myDeclval<t_ARGTYPES_06>(),
10574 myDeclval<t_ARGTYPES_07>(),
10575 myDeclval<t_ARGTYPES_08>(),
10576 myDeclval<t_ARGTYPES_09>(),
10577 myDeclval<t_ARGTYPES_10>(),
10578 myDeclval<t_ARGTYPES_11>(),
10579 myDeclval<t_ARGTYPES_12>(),
10580 myDeclval<t_ARGTYPES_13>())) type;
10585#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
10586template <
class t_FN,
class t_ARG1TYPE>
10587struct InvokeResult_MemFuncPtrImpDispatch<
10588 typename
bslmf::VoidType<
10589 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10590 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10595 t_ARG1TYPE> : InvokeResult_ImpUtils {
10598 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10599 myDeclval<t_FN>())()) type;
10603#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
10604template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01>
10605struct InvokeResult_MemFuncPtrImpDispatch<
10606 typename
bslmf::VoidType<
10607 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10608 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10609 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
10614 t_ARGTYPES_01> : InvokeResult_ImpUtils {
10617 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10618 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>())) type;
10622#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
10623template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10624 class t_ARGTYPES_02>
10625struct InvokeResult_MemFuncPtrImpDispatch<
10626 typename
bslmf::VoidType<
10627 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10628 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10629 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10630 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
10636 t_ARGTYPES_02> : InvokeResult_ImpUtils {
10639 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10640 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10641 myDeclval<t_ARGTYPES_02>())) type;
10645#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
10646template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10647 class t_ARGTYPES_02,
10648 class t_ARGTYPES_03>
10649struct InvokeResult_MemFuncPtrImpDispatch<
10650 typename
bslmf::VoidType<
10651 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10652 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10653 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10654 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10655 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
10662 t_ARGTYPES_03> : InvokeResult_ImpUtils {
10665 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10666 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10667 myDeclval<t_ARGTYPES_02>(),
10668 myDeclval<t_ARGTYPES_03>())) type;
10672#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
10673template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10674 class t_ARGTYPES_02,
10675 class t_ARGTYPES_03,
10676 class t_ARGTYPES_04>
10677struct InvokeResult_MemFuncPtrImpDispatch<
10678 typename
bslmf::VoidType<
10679 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10680 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10681 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10682 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10683 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10684 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
10692 t_ARGTYPES_04> : InvokeResult_ImpUtils {
10695 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10696 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10697 myDeclval<t_ARGTYPES_02>(),
10698 myDeclval<t_ARGTYPES_03>(),
10699 myDeclval<t_ARGTYPES_04>())) type;
10703#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
10704template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10705 class t_ARGTYPES_02,
10706 class t_ARGTYPES_03,
10707 class t_ARGTYPES_04,
10708 class t_ARGTYPES_05>
10709struct InvokeResult_MemFuncPtrImpDispatch<
10710 typename
bslmf::VoidType<
10711 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10712 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10713 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10714 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10715 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10716 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10717 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
10726 t_ARGTYPES_05> : InvokeResult_ImpUtils {
10729 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10730 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10731 myDeclval<t_ARGTYPES_02>(),
10732 myDeclval<t_ARGTYPES_03>(),
10733 myDeclval<t_ARGTYPES_04>(),
10734 myDeclval<t_ARGTYPES_05>())) type;
10738#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
10739template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10740 class t_ARGTYPES_02,
10741 class t_ARGTYPES_03,
10742 class t_ARGTYPES_04,
10743 class t_ARGTYPES_05,
10744 class t_ARGTYPES_06>
10745struct InvokeResult_MemFuncPtrImpDispatch<
10746 typename
bslmf::VoidType<
10747 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10748 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10749 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10750 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10751 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10752 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10753 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10754 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
10764 t_ARGTYPES_06> : InvokeResult_ImpUtils {
10767 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10768 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10769 myDeclval<t_ARGTYPES_02>(),
10770 myDeclval<t_ARGTYPES_03>(),
10771 myDeclval<t_ARGTYPES_04>(),
10772 myDeclval<t_ARGTYPES_05>(),
10773 myDeclval<t_ARGTYPES_06>())) type;
10777#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
10778template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10779 class t_ARGTYPES_02,
10780 class t_ARGTYPES_03,
10781 class t_ARGTYPES_04,
10782 class t_ARGTYPES_05,
10783 class t_ARGTYPES_06,
10784 class t_ARGTYPES_07>
10785struct InvokeResult_MemFuncPtrImpDispatch<
10786 typename
bslmf::VoidType<
10787 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10788 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10789 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10790 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10791 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10792 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10793 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10794 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10795 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
10806 t_ARGTYPES_07> : InvokeResult_ImpUtils {
10809 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10810 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10811 myDeclval<t_ARGTYPES_02>(),
10812 myDeclval<t_ARGTYPES_03>(),
10813 myDeclval<t_ARGTYPES_04>(),
10814 myDeclval<t_ARGTYPES_05>(),
10815 myDeclval<t_ARGTYPES_06>(),
10816 myDeclval<t_ARGTYPES_07>())) type;
10820#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
10821template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10822 class t_ARGTYPES_02,
10823 class t_ARGTYPES_03,
10824 class t_ARGTYPES_04,
10825 class t_ARGTYPES_05,
10826 class t_ARGTYPES_06,
10827 class t_ARGTYPES_07,
10828 class t_ARGTYPES_08>
10829struct InvokeResult_MemFuncPtrImpDispatch<
10830 typename
bslmf::VoidType<
10831 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10832 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10833 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10834 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10835 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10836 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10837 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10838 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10839 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10840 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
10852 t_ARGTYPES_08> : InvokeResult_ImpUtils {
10855 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10856 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10857 myDeclval<t_ARGTYPES_02>(),
10858 myDeclval<t_ARGTYPES_03>(),
10859 myDeclval<t_ARGTYPES_04>(),
10860 myDeclval<t_ARGTYPES_05>(),
10861 myDeclval<t_ARGTYPES_06>(),
10862 myDeclval<t_ARGTYPES_07>(),
10863 myDeclval<t_ARGTYPES_08>())) type;
10867#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
10868template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10869 class t_ARGTYPES_02,
10870 class t_ARGTYPES_03,
10871 class t_ARGTYPES_04,
10872 class t_ARGTYPES_05,
10873 class t_ARGTYPES_06,
10874 class t_ARGTYPES_07,
10875 class t_ARGTYPES_08,
10876 class t_ARGTYPES_09>
10877struct InvokeResult_MemFuncPtrImpDispatch<
10878 typename
bslmf::VoidType<
10879 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10880 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10881 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10882 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10883 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10884 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10885 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10886 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10887 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10888 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10889 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
10902 t_ARGTYPES_09> : InvokeResult_ImpUtils {
10905 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10906 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10907 myDeclval<t_ARGTYPES_02>(),
10908 myDeclval<t_ARGTYPES_03>(),
10909 myDeclval<t_ARGTYPES_04>(),
10910 myDeclval<t_ARGTYPES_05>(),
10911 myDeclval<t_ARGTYPES_06>(),
10912 myDeclval<t_ARGTYPES_07>(),
10913 myDeclval<t_ARGTYPES_08>(),
10914 myDeclval<t_ARGTYPES_09>())) type;
10918#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
10919template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10920 class t_ARGTYPES_02,
10921 class t_ARGTYPES_03,
10922 class t_ARGTYPES_04,
10923 class t_ARGTYPES_05,
10924 class t_ARGTYPES_06,
10925 class t_ARGTYPES_07,
10926 class t_ARGTYPES_08,
10927 class t_ARGTYPES_09,
10928 class t_ARGTYPES_10>
10929struct InvokeResult_MemFuncPtrImpDispatch<
10930 typename
bslmf::VoidType<
10931 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10932 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10933 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10934 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10935 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10936 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10937 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10938 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10939 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10940 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10941 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10942 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
10956 t_ARGTYPES_10> : InvokeResult_ImpUtils {
10959 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10960 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10961 myDeclval<t_ARGTYPES_02>(),
10962 myDeclval<t_ARGTYPES_03>(),
10963 myDeclval<t_ARGTYPES_04>(),
10964 myDeclval<t_ARGTYPES_05>(),
10965 myDeclval<t_ARGTYPES_06>(),
10966 myDeclval<t_ARGTYPES_07>(),
10967 myDeclval<t_ARGTYPES_08>(),
10968 myDeclval<t_ARGTYPES_09>(),
10969 myDeclval<t_ARGTYPES_10>())) type;
10973#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
10974template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10975 class t_ARGTYPES_02,
10976 class t_ARGTYPES_03,
10977 class t_ARGTYPES_04,
10978 class t_ARGTYPES_05,
10979 class t_ARGTYPES_06,
10980 class t_ARGTYPES_07,
10981 class t_ARGTYPES_08,
10982 class t_ARGTYPES_09,
10983 class t_ARGTYPES_10,
10984 class t_ARGTYPES_11>
10985struct InvokeResult_MemFuncPtrImpDispatch<
10986 typename
bslmf::VoidType<
10987 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10988 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10989 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10990 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10991 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10992 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10993 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10994 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10995 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10996 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10997 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10998 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
10999 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
11014 t_ARGTYPES_11> : InvokeResult_ImpUtils {
11017 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
11018 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
11019 myDeclval<t_ARGTYPES_02>(),
11020 myDeclval<t_ARGTYPES_03>(),
11021 myDeclval<t_ARGTYPES_04>(),
11022 myDeclval<t_ARGTYPES_05>(),
11023 myDeclval<t_ARGTYPES_06>(),
11024 myDeclval<t_ARGTYPES_07>(),
11025 myDeclval<t_ARGTYPES_08>(),
11026 myDeclval<t_ARGTYPES_09>(),
11027 myDeclval<t_ARGTYPES_10>(),
11028 myDeclval<t_ARGTYPES_11>())) type;
11032#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
11033template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
11034 class t_ARGTYPES_02,
11035 class t_ARGTYPES_03,
11036 class t_ARGTYPES_04,
11037 class t_ARGTYPES_05,
11038 class t_ARGTYPES_06,
11039 class t_ARGTYPES_07,
11040 class t_ARGTYPES_08,
11041 class t_ARGTYPES_09,
11042 class t_ARGTYPES_10,
11043 class t_ARGTYPES_11,
11044 class t_ARGTYPES_12>
11045struct InvokeResult_MemFuncPtrImpDispatch<
11046 typename
bslmf::VoidType<
11047 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
11048 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11049 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
11050 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
11051 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
11052 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
11053 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
11054 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
11055 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
11056 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
11057 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
11058 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
11059 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
11060 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
11076 t_ARGTYPES_12> : InvokeResult_ImpUtils {
11079 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
11080 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
11081 myDeclval<t_ARGTYPES_02>(),
11082 myDeclval<t_ARGTYPES_03>(),
11083 myDeclval<t_ARGTYPES_04>(),
11084 myDeclval<t_ARGTYPES_05>(),
11085 myDeclval<t_ARGTYPES_06>(),
11086 myDeclval<t_ARGTYPES_07>(),
11087 myDeclval<t_ARGTYPES_08>(),
11088 myDeclval<t_ARGTYPES_09>(),
11089 myDeclval<t_ARGTYPES_10>(),
11090 myDeclval<t_ARGTYPES_11>(),
11091 myDeclval<t_ARGTYPES_12>())) type;
11095#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
11096template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
11097 class t_ARGTYPES_02,
11098 class t_ARGTYPES_03,
11099 class t_ARGTYPES_04,
11100 class t_ARGTYPES_05,
11101 class t_ARGTYPES_06,
11102 class t_ARGTYPES_07,
11103 class t_ARGTYPES_08,
11104 class t_ARGTYPES_09,
11105 class t_ARGTYPES_10,
11106 class t_ARGTYPES_11,
11107 class t_ARGTYPES_12,
11108 class t_ARGTYPES_13>
11109struct InvokeResult_MemFuncPtrImpDispatch<
11110 typename
bslmf::VoidType<
11111 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
11112 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11113 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
11114 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
11115 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
11116 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
11117 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
11118 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
11119 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
11120 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
11121 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
11122 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
11123 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
11124 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
11125 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
11142 t_ARGTYPES_13> : InvokeResult_ImpUtils {
11145 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
11146 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
11147 myDeclval<t_ARGTYPES_02>(),
11148 myDeclval<t_ARGTYPES_03>(),
11149 myDeclval<t_ARGTYPES_04>(),
11150 myDeclval<t_ARGTYPES_05>(),
11151 myDeclval<t_ARGTYPES_06>(),
11152 myDeclval<t_ARGTYPES_07>(),
11153 myDeclval<t_ARGTYPES_08>(),
11154 myDeclval<t_ARGTYPES_09>(),
11155 myDeclval<t_ARGTYPES_10>(),
11156 myDeclval<t_ARGTYPES_11>(),
11157 myDeclval<t_ARGTYPES_12>(),
11158 myDeclval<t_ARGTYPES_13>())) type;
11166#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11167template <
class t_VOID_TYPE,
11168 bool t_ARG_DERIVES_FROM_CLASS,
11169 bool t_ARG_IS_REFERENCE_WRAPPER,
11172struct InvokeResult_MemObjPtrImpDispatch;
11175#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
11176template <
class t_FN>
11177struct InvokeResult_MemObjPtrImp<t_FN> {
11181#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
11182template <
class t_FN,
class t_ARGTYPES_01>
11183struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01> {
11187#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
11188template <
class t_FN,
class t_ARGTYPES_01,
11189 class t_ARGTYPES_02>
11190struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11195#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
11196template <
class t_FN,
class t_ARGTYPES_01,
11197 class t_ARGTYPES_02,
11198 class t_ARGTYPES_03>
11199struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11205#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
11206template <
class t_FN,
class t_ARGTYPES_01,
11207 class t_ARGTYPES_02,
11208 class t_ARGTYPES_03,
11209 class t_ARGTYPES_04>
11210struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11217#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
11218template <
class t_FN,
class t_ARGTYPES_01,
11219 class t_ARGTYPES_02,
11220 class t_ARGTYPES_03,
11221 class t_ARGTYPES_04,
11222 class t_ARGTYPES_05>
11223struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11231#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
11232template <
class t_FN,
class t_ARGTYPES_01,
11233 class t_ARGTYPES_02,
11234 class t_ARGTYPES_03,
11235 class t_ARGTYPES_04,
11236 class t_ARGTYPES_05,
11237 class t_ARGTYPES_06>
11238struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11247#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
11248template <
class t_FN,
class t_ARGTYPES_01,
11249 class t_ARGTYPES_02,
11250 class t_ARGTYPES_03,
11251 class t_ARGTYPES_04,
11252 class t_ARGTYPES_05,
11253 class t_ARGTYPES_06,
11254 class t_ARGTYPES_07>
11255struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11265#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
11266template <
class t_FN,
class t_ARGTYPES_01,
11267 class t_ARGTYPES_02,
11268 class t_ARGTYPES_03,
11269 class t_ARGTYPES_04,
11270 class t_ARGTYPES_05,
11271 class t_ARGTYPES_06,
11272 class t_ARGTYPES_07,
11273 class t_ARGTYPES_08>
11274struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11285#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
11286template <
class t_FN,
class t_ARGTYPES_01,
11287 class t_ARGTYPES_02,
11288 class t_ARGTYPES_03,
11289 class t_ARGTYPES_04,
11290 class t_ARGTYPES_05,
11291 class t_ARGTYPES_06,
11292 class t_ARGTYPES_07,
11293 class t_ARGTYPES_08,
11294 class t_ARGTYPES_09>
11295struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11307#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
11308template <
class t_FN,
class t_ARGTYPES_01,
11309 class t_ARGTYPES_02,
11310 class t_ARGTYPES_03,
11311 class t_ARGTYPES_04,
11312 class t_ARGTYPES_05,
11313 class t_ARGTYPES_06,
11314 class t_ARGTYPES_07,
11315 class t_ARGTYPES_08,
11316 class t_ARGTYPES_09,
11317 class t_ARGTYPES_10>
11318struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11331#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
11332template <
class t_FN,
class t_ARGTYPES_01,
11333 class t_ARGTYPES_02,
11334 class t_ARGTYPES_03,
11335 class t_ARGTYPES_04,
11336 class t_ARGTYPES_05,
11337 class t_ARGTYPES_06,
11338 class t_ARGTYPES_07,
11339 class t_ARGTYPES_08,
11340 class t_ARGTYPES_09,
11341 class t_ARGTYPES_10,
11342 class t_ARGTYPES_11>
11343struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11357#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
11358template <
class t_FN,
class t_ARGTYPES_01,
11359 class t_ARGTYPES_02,
11360 class t_ARGTYPES_03,
11361 class t_ARGTYPES_04,
11362 class t_ARGTYPES_05,
11363 class t_ARGTYPES_06,
11364 class t_ARGTYPES_07,
11365 class t_ARGTYPES_08,
11366 class t_ARGTYPES_09,
11367 class t_ARGTYPES_10,
11368 class t_ARGTYPES_11,
11369 class t_ARGTYPES_12>
11370struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11385#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
11386template <
class t_FN,
class t_ARGTYPES_01,
11387 class t_ARGTYPES_02,
11388 class t_ARGTYPES_03,
11389 class t_ARGTYPES_04,
11390 class t_ARGTYPES_05,
11391 class t_ARGTYPES_06,
11392 class t_ARGTYPES_07,
11393 class t_ARGTYPES_08,
11394 class t_ARGTYPES_09,
11395 class t_ARGTYPES_10,
11396 class t_ARGTYPES_11,
11397 class t_ARGTYPES_12,
11398 class t_ARGTYPES_13>
11399struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11416template <
class t_FN,
class t_ARGTYPE>
11417struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPE>
11418: InvokeResult_MemObjPtrImpDispatch<
11420 IsAccessibleBaseOf<
11421 typename MemberPointerTraits<t_FN>::ClassType,
11422 typename bsl::remove_reference<t_ARGTYPE>::type>::value,
11423 IsReferenceWrapper<typename bsl::remove_const<
11424 typename bsl::remove_reference<t_ARGTYPE>::type>::type>::value,
11431#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
11432template <
class t_FN>
11433struct InvokeResult_MemObjPtrImp<t_FN> {
11437#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
11438template <
class t_FN,
class t_ARGTYPES_01>
11439struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01> {
11443#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
11444template <
class t_FN,
class t_ARGTYPES_01,
11445 class t_ARGTYPES_02>
11446struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11451#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
11452template <
class t_FN,
class t_ARGTYPES_01,
11453 class t_ARGTYPES_02,
11454 class t_ARGTYPES_03>
11455struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11461#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
11462template <
class t_FN,
class t_ARGTYPES_01,
11463 class t_ARGTYPES_02,
11464 class t_ARGTYPES_03,
11465 class t_ARGTYPES_04>
11466struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11473#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
11474template <
class t_FN,
class t_ARGTYPES_01,
11475 class t_ARGTYPES_02,
11476 class t_ARGTYPES_03,
11477 class t_ARGTYPES_04,
11478 class t_ARGTYPES_05>
11479struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11487#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
11488template <
class t_FN,
class t_ARGTYPES_01,
11489 class t_ARGTYPES_02,
11490 class t_ARGTYPES_03,
11491 class t_ARGTYPES_04,
11492 class t_ARGTYPES_05,
11493 class t_ARGTYPES_06>
11494struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11503#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
11504template <
class t_FN,
class t_ARGTYPES_01,
11505 class t_ARGTYPES_02,
11506 class t_ARGTYPES_03,
11507 class t_ARGTYPES_04,
11508 class t_ARGTYPES_05,
11509 class t_ARGTYPES_06,
11510 class t_ARGTYPES_07>
11511struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11521#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
11522template <
class t_FN,
class t_ARGTYPES_01,
11523 class t_ARGTYPES_02,
11524 class t_ARGTYPES_03,
11525 class t_ARGTYPES_04,
11526 class t_ARGTYPES_05,
11527 class t_ARGTYPES_06,
11528 class t_ARGTYPES_07,
11529 class t_ARGTYPES_08>
11530struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11541#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
11542template <
class t_FN,
class t_ARGTYPES_01,
11543 class t_ARGTYPES_02,
11544 class t_ARGTYPES_03,
11545 class t_ARGTYPES_04,
11546 class t_ARGTYPES_05,
11547 class t_ARGTYPES_06,
11548 class t_ARGTYPES_07,
11549 class t_ARGTYPES_08,
11550 class t_ARGTYPES_09>
11551struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11563#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
11564template <
class t_FN,
class t_ARGTYPES_01,
11565 class t_ARGTYPES_02,
11566 class t_ARGTYPES_03,
11567 class t_ARGTYPES_04,
11568 class t_ARGTYPES_05,
11569 class t_ARGTYPES_06,
11570 class t_ARGTYPES_07,
11571 class t_ARGTYPES_08,
11572 class t_ARGTYPES_09,
11573 class t_ARGTYPES_10>
11574struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11587#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
11588template <
class t_FN,
class t_ARGTYPES_01,
11589 class t_ARGTYPES_02,
11590 class t_ARGTYPES_03,
11591 class t_ARGTYPES_04,
11592 class t_ARGTYPES_05,
11593 class t_ARGTYPES_06,
11594 class t_ARGTYPES_07,
11595 class t_ARGTYPES_08,
11596 class t_ARGTYPES_09,
11597 class t_ARGTYPES_10,
11598 class t_ARGTYPES_11>
11599struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11613#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
11614template <
class t_FN,
class t_ARGTYPES_01,
11615 class t_ARGTYPES_02,
11616 class t_ARGTYPES_03,
11617 class t_ARGTYPES_04,
11618 class t_ARGTYPES_05,
11619 class t_ARGTYPES_06,
11620 class t_ARGTYPES_07,
11621 class t_ARGTYPES_08,
11622 class t_ARGTYPES_09,
11623 class t_ARGTYPES_10,
11624 class t_ARGTYPES_11,
11625 class t_ARGTYPES_12>
11626struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11641#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
11642template <
class t_FN,
class t_ARGTYPES_01,
11643 class t_ARGTYPES_02,
11644 class t_ARGTYPES_03,
11645 class t_ARGTYPES_04,
11646 class t_ARGTYPES_05,
11647 class t_ARGTYPES_06,
11648 class t_ARGTYPES_07,
11649 class t_ARGTYPES_08,
11650 class t_ARGTYPES_09,
11651 class t_ARGTYPES_10,
11652 class t_ARGTYPES_11,
11653 class t_ARGTYPES_12,
11654 class t_ARGTYPES_13>
11655struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11672template <
class t_CLASS,
class t_RET,
class t_ARGTYPE>
11673struct InvokeResult_MemObjPtrImp<t_RET t_CLASS::*, t_ARGTYPE> {
11676 typedef InvokeResult_MemPtrArgQualifiers<t_CLASS, t_ARGTYPE> ArgQualifiers;
11678 typedef typename InvokeResult_AddCVRef<t_RET,
11679 ArgQualifiers::k_IS_CONST,
11680 ArgQualifiers::k_IS_VOLATILE,
11681 ArgQualifiers::k_IS_LVALUE>::type
11685#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
11687 ArgQualifiers::k_IS_LVALUE,
11689 typename bsl::add_rvalue_reference<cvtype>::type>::type type;
11691 typedef cvtype type;
11697#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11698template <
class t_VOID_TYPE,
11699 bool t_ARG_DERIVES_FROM_CLASS,
11700 bool t_ARG_IS_REFERENCE_WRAPPER,
11703struct InvokeResult_MemObjPtrImpDispatch {
11706template <
class t_FN,
class t_ARGTYPE>
11707struct InvokeResult_MemObjPtrImpDispatch<
11708 typename
bslmf::VoidType<
11709 decltype((*InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>()).*
11710 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
11714 t_ARGTYPE> : InvokeResult_ImpUtils {
11716 typedef decltype((*myDeclval<t_ARGTYPE>()).*myDeclval<t_FN>()) type;
11719template <
class t_FN,
class t_ARGTYPE>
11720struct InvokeResult_MemObjPtrImpDispatch<
11721 typename
bslmf::VoidType<
11722 decltype(InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>().*
11723 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
11727 t_ARGTYPE> : InvokeResult_ImpUtils {
11729 typedef decltype(myDeclval<t_ARGTYPE>().*myDeclval<t_FN>()) type;
11732template <
class t_FN,
class t_ARGTYPE>
11733struct InvokeResult_MemObjPtrImpDispatch<
11734 typename
bslmf::VoidType<
11735 decltype(InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>().get().*
11736 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
11740 t_ARGTYPE> : InvokeResult_ImpUtils {
11742 typedef decltype(myDeclval<t_ARGTYPE>().get().*myDeclval<t_FN>()) type;
11750template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11751struct InvokeResult_FunctorImp;
11753template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11754struct InvokeResult_FuncPtrImp;
11756template <
class t_FN,
class... t_ARGTYPES>
11757struct InvokeResult_MemFuncPtrImp;
11759template <
class t_FN,
class... t_ARGTYPES>
11760struct InvokeResult_MemObjPtrImp;
11763template <
bool t_IS_FUNCPTR,
11764 bool t_IS_MEMFUNCPTR,
11765 bool t_IS_MEMOBJPTR,
11767 class... t_ARGTYPES>
11768struct InvokeResult_Imp : InvokeResult_FunctorImp<void, t_FN, t_ARGTYPES...> {
11771template <
class t_FN,
class... t_ARGTYPES>
11772struct InvokeResult_Imp<true ,
11777: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES...> {
11780template <
class t_FN,
class... t_ARGTYPES>
11781struct InvokeResult_Imp<false,
11786: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES...> {
11789template <
class t_FN,
class... t_ARGTYPES>
11790struct InvokeResult_Imp<false,
11795: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES...> {
11799#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11800template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11801struct InvokeResult_FunctorImp {
11804template <
class t_FN,
class... t_ARGTYPES>
11805struct InvokeResult_FunctorImp<
11806 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
11807 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11809 t_ARGTYPES...> : InvokeResult_ImpUtils {
11812 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)) type;
11815template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11816struct InvokeResult_FunctorImp : InvokeResult_ImpUtils {
11820 myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...),
11821 InvokeResult_VoidChecker()))
11824 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
11826 t_ARGTYPES...>::type type;
11831#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11832template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11833struct InvokeResult_FuncPtrImp {
11836template <
class t_FN,
class... t_ARGTYPES>
11837struct InvokeResult_FuncPtrImp<
11838 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
11839 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11841 t_ARGTYPES...> : InvokeResult_ImpUtils {
11844 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)) type;
11847template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11848struct InvokeResult_FuncPtrImp {
11860#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11861template <
class t_VOID_TYPE,
11862 bool t_ARG1_DERIVES_FROM_CLASS,
11863 bool t_ARG1_IS_REFERENCE_WRAPPER,
11866 class... t_ARGTYPES>
11867struct InvokeResult_MemFuncPtrImpDispatch;
11870template <
class t_FN>
11871struct InvokeResult_MemFuncPtrImp<t_FN> {
11874template <
class t_FN,
class t_ARG1TYPE,
class... t_ARGTYPES>
11875struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES...>
11876: InvokeResult_MemFuncPtrImpDispatch<
11878 IsAccessibleBaseOf<
11879 typename MemberFunctionPointerTraits<t_FN>::ClassType,
11880 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
11881 IsReferenceWrapper<typename bsl::remove_const<
11882 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
11888template <
class t_FN,
class... t_ARGTYPES>
11889struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES...> {
11891 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
11901#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11902template <
class t_VOID_TYPE,
11903 bool t_ARG1_DERIVES_FROM_CLASS,
11904 bool t_ARG1_IS_REFERENCE_WRAPPER,
11907 class... t_ARGTYPES>
11908struct InvokeResult_MemFuncPtrImpDispatch {
11911template <
class t_FN,
class t_ARG1TYPE,
class... t_ARGTYPES>
11912struct InvokeResult_MemFuncPtrImpDispatch<
11913 typename
bslmf::VoidType<
11914 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
11915 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11916 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11921 t_ARGTYPES...> : InvokeResult_ImpUtils {
11924 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
11925 myDeclval<t_FN>())(myDeclval<t_ARGTYPES>()...)) type;
11928template <
class t_FN,
class t_ARG1TYPE,
class... t_ARGTYPES>
11929struct InvokeResult_MemFuncPtrImpDispatch<
11930 typename
bslmf::VoidType<
11931 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
11932 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11933 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11938 t_ARGTYPES...> : InvokeResult_ImpUtils {
11941 typedef decltype((myDeclval<t_ARG1TYPE>().*
11942 myDeclval<t_FN>())(myDeclval<t_ARGTYPES>()...)) type;
11945template <
class t_FN,
class t_ARG1TYPE,
class... t_ARGTYPES>
11946struct InvokeResult_MemFuncPtrImpDispatch<
11947 typename
bslmf::VoidType<
11948 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
11949 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11950 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11955 t_ARGTYPES...> : InvokeResult_ImpUtils {
11958 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
11959 myDeclval<t_FN>())(myDeclval<t_ARGTYPES>()...)) type;
11965#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11966template <
class t_VOID_TYPE,
11967 bool t_ARG_DERIVES_FROM_CLASS,
11968 bool t_ARG_IS_REFERENCE_WRAPPER,
11971struct InvokeResult_MemObjPtrImpDispatch;
11974template <
class t_FN,
class... t_ARGTYPES>
11975struct InvokeResult_MemObjPtrImp {
11978template <
class t_FN,
class t_ARGTYPE>
11979struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPE>
11980: InvokeResult_MemObjPtrImpDispatch<
11982 IsAccessibleBaseOf<
11983 typename MemberPointerTraits<t_FN>::ClassType,
11984 typename bsl::remove_reference<t_ARGTYPE>::type>::value,
11985 IsReferenceWrapper<typename bsl::remove_const<
11986 typename bsl::remove_reference<t_ARGTYPE>::type>::type>::value,
11993template <
class t_FN,
class... t_ARGTYPES>
11994struct InvokeResult_MemObjPtrImp {
11997template <
class t_CLASS,
class t_RET,
class t_ARGTYPE>
11998struct InvokeResult_MemObjPtrImp<t_RET t_CLASS::*, t_ARGTYPE> {
12001 typedef InvokeResult_MemPtrArgQualifiers<t_CLASS, t_ARGTYPE> ArgQualifiers;
12003 typedef typename InvokeResult_AddCVRef<t_RET,
12004 ArgQualifiers::k_IS_CONST,
12005 ArgQualifiers::k_IS_VOLATILE,
12006 ArgQualifiers::k_IS_LVALUE>::type
12010#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
12012 ArgQualifiers::k_IS_LVALUE,
12014 typename bsl::add_rvalue_reference<cvtype>::type>::type type;
12016 typedef cvtype type;
12022#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
12023template <
class t_VOID_TYPE,
12024 bool t_ARG_DERIVES_FROM_CLASS,
12025 bool t_ARG_IS_REFERENCE_WRAPPER,
12028struct InvokeResult_MemObjPtrImpDispatch {
12031template <
class t_FN,
class t_ARGTYPE>
12032struct InvokeResult_MemObjPtrImpDispatch<
12033 typename
bslmf::VoidType<
12034 decltype((*InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>()).*
12035 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
12039 t_ARGTYPE> : InvokeResult_ImpUtils {
12041 typedef decltype((*myDeclval<t_ARGTYPE>()).*myDeclval<t_FN>()) type;
12044template <
class t_FN,
class t_ARGTYPE>
12045struct InvokeResult_MemObjPtrImpDispatch<
12046 typename
bslmf::VoidType<
12047 decltype(InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>().*
12048 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
12052 t_ARGTYPE> : InvokeResult_ImpUtils {
12054 typedef decltype(myDeclval<t_ARGTYPE>().*myDeclval<t_FN>()) type;
12057template <
class t_FN,
class t_ARGTYPE>
12058struct InvokeResult_MemObjPtrImpDispatch<
12059 typename
bslmf::VoidType<
12060 decltype(InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>().get().*
12061 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
12065 t_ARGTYPE> : InvokeResult_ImpUtils {
12067 typedef decltype(myDeclval<t_ARGTYPE>().get().*myDeclval<t_FN>()) type;
12079# error Not valid except when included from bslmf_invokeresult.h
decay_imp< U, k_ISARRAY, k_ISFUNC >::type type
Definition bslmf_decay.h:166
#define BSLMF_TAG_TO_INT(BSLMF_EXPR)
Definition bslmf_tag.h:176
Definition bdlb_printmethods.h:283
BloombergLP::bsls::Nullptr_Impl::Type nullptr_t
Definition bsls_nullptr.h:281
Definition bdlbb_blob.h:576
BloombergLP::bslmf::AddConst_Imp< t_TYPE,!is_reference< t_TYPE >::value &&!is_function< t_TYPE >::value &&!is_const< t_TYPE >::value >::Type type
Definition bslmf_addconst.h:172
t_TYPE & type
This typedef defines the return type of this meta function.
Definition bslmf_addlvaluereference.h:129
BloombergLP::bslmf::AddPointer_Impl< t_TYPE >::type type
Definition bslmf_addpointer.h:175
BloombergLP::bslmf::AddVolatile_Imp< t_TYPE,!is_reference< t_TYPE >::value &&!is_function< t_TYPE >::value &&!is_volatile< t_TYPE >::value >::Type type
Definition bslmf_addvolatile.h:174
Definition bslmf_conditional.h:120
Definition bslmf_enableif.h:525
Definition bslmf_isclass.h:163
Definition bslmf_isconst.h:144
Definition bslmf_isconvertible.h:867
Definition bslmf_islvaluereference.h:125
Definition bslmf_ismemberobjectpointer.h:141
Definition bslmf_isreference.h:137
Definition bslmf_isrvaluereference.h:126
Definition bslmf_isvolatile.h:144
remove_const< typenameremove_volatile< t_TYPE >::type >::type type
Definition bslmf_removecv.h:126
Definition bslmf_functionpointertraits.h:137
InvokeResultDeductionFailed(const t_TYPE &)
Definition bslmf_invokeresult.h:315
BloombergLP::bslmf::InvokeResult_Imp< k_IS_FUNCPTR, k_IS_MEMFUNCPTR, k_IS_MEMOBJPTR, FwdFn, t_ARGTYPES... > BaseType
Definition bslmf_invokeresult.h:453
AnyLvalue(volatile t_TP &)
(Declared but not defined) Convert from any lvalue argument.
t_FALLBACK type
Definition bslmf_resulttype.h:260
Definition bslmf_tag.h:163