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)
69# 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> {
1704template <
class t_TYPE>
1706operator,(
const t_TYPE&, InvokeResult_VoidChecker);
1711struct InvokeResult_Index {
1742 e_CONST_VOLATILE_VOIDPTR,
1754#ifdef BSLS_COMPILERFEATURES_SUPPORT_UTF8_CHAR_TYPE
1758#ifdef BSLS_COMPILERFEATURES_SUPPORT_UNICODE_CHAR_TYPES
1782 template <
class t_TP>
1784 template <
class t_TP>
1792template <
int t_INDEX>
struct InvokeResult_Type;
1801struct InvokeResult_Type<InvokeResult_Index::e_VOID>
1802 {
typedef void type; };
1804struct InvokeResult_Type<InvokeResult_Index::e_BOOL>
1805 {
typedef bool type; };
1807struct InvokeResult_Type<InvokeResult_Index::e_CHAR>
1808 {
typedef char type; };
1810struct InvokeResult_Type<InvokeResult_Index::e_SCHAR>
1811 {
typedef signed char type; };
1813struct InvokeResult_Type<InvokeResult_Index::e_UCHAR>
1814 {
typedef unsigned char type; };
1815#ifdef BSLS_COMPILERFEATURES_SUPPORT_UTF8_CHAR_TYPE
1817struct InvokeResult_Type<InvokeResult_Index::e_CHAR8_T>
1818 {
typedef char8_t type; };
1821struct InvokeResult_Type<InvokeResult_Index::e_WCHAR_T>
1822 {
typedef wchar_t type; };
1823#ifdef BSLS_COMPILERFEATURES_SUPPORT_UNICODE_CHAR_TYPES
1825struct InvokeResult_Type<InvokeResult_Index::e_CHAR16_T>
1826 {
typedef char16_t type; };
1828struct InvokeResult_Type<InvokeResult_Index::e_CHAR32_T>
1829 {
typedef char32_t type; };
1832struct InvokeResult_Type<InvokeResult_Index::e_SHORT>
1833 {
typedef short type; };
1835struct InvokeResult_Type<InvokeResult_Index::e_USHORT>
1836 {
typedef unsigned short type; };
1838struct InvokeResult_Type<InvokeResult_Index::e_INT>
1839 {
typedef int type; };
1841struct InvokeResult_Type<InvokeResult_Index::e_UNSIGNED>
1842 {
typedef unsigned type; };
1844struct InvokeResult_Type<InvokeResult_Index::e_LONG>
1845 {
typedef long type; };
1847struct InvokeResult_Type<InvokeResult_Index::e_ULONG>
1848 {
typedef unsigned long type; };
1850struct InvokeResult_Type<InvokeResult_Index::e_LONG_LONG>
1851 {
typedef long long type; };
1853struct InvokeResult_Type<InvokeResult_Index::e_ULONG_LONG>
1854 {
typedef unsigned long long type; };
1856struct InvokeResult_Type<InvokeResult_Index::e_FLOAT>
1857 {
typedef float type; };
1859struct InvokeResult_Type<InvokeResult_Index::e_DOUBLE>
1860 {
typedef double type; };
1862struct InvokeResult_Type<InvokeResult_Index::e_LONG_DOUBLE>
1863 {
typedef long double type; };
1865struct InvokeResult_Type<InvokeResult_Index::e_VOIDPTR>
1866 {
typedef void *type; };
1868struct InvokeResult_Type<InvokeResult_Index::e_CONST_VOIDPTR>
1869 {
typedef const void *type; };
1871struct InvokeResult_Type<InvokeResult_Index::e_VOLATILE_VOIDPTR>
1872 {
typedef volatile void *type; };
1874struct InvokeResult_Type<InvokeResult_Index::e_CONST_VOLATILE_VOIDPTR>
1875 {
typedef const volatile void *type; };
1877struct InvokeResult_Type<InvokeResult_Index::e_NULLPTR_T>
1880struct InvokeResult_Type<InvokeResult_Index::e_POINTER>
1881 {
typedef void *type; };
1883struct InvokeResult_Type<InvokeResult_Index::e_OTHER>
1884 {
typedef InvokeResultDeductionFailed type; };
1890struct InvokeResult_ImpUtils
1904 template <
class t_TP>
1915#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
1917 template <
class t_TP>
1923 template <
class t_TP>
1932#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
1939 template <
class t_SOME_TYPE>
1940 static typename bsl::add_rvalue_reference<t_SOME_TYPE>::type myDeclval();
1942 template <
class t_SOME_TYPE>
1943 static t_SOME_TYPE myDeclval();
1961 template <
class t_TP>
1963 template <
class t_TP>
1972 template <
class t_TP>
1974 template <
class t_TP>
1976 template <
class t_TP>
1978 template <
class t_TP>
1983 template <
class t_TP>
1984 static t_TP& uncv(
const t_TP&);
1985 template <
class t_TP>
1986 static t_TP& uncv(
const volatile t_TP&);
1993 template <
class t_TP>
1994 static t_TP& unpoint(t_TP&);
1995 template <
class t_TP>
1996 static const t_TP& unpoint(
const t_TP&);
1997 template <
class t_TP>
2000 template <
class t_TP>
2002 unpoint(t_TP *
const&);
2003 template <
class t_TP>
2005 unpoint(t_TP *
volatile&);
2006 template <
class t_TP>
2008 unpoint(t_TP *
const volatile&);
2024template <
class t_UNQUAL_TYPE,
2028struct InvokeResult_AddCVRef {
2035 t_UNQUAL_TYPE>::type CQualType;
2040 CQualType>::type CVQualType;
2047 CVQualType>::type type;
2050#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
2053#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT
2054#define BSLMF_INVOKERESULT_VARIADIC_LIMIT 13
2056#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT_D
2057#define BSLMF_INVOKERESULT_VARIADIC_LIMIT_D BSLMF_INVOKERESULT_VARIADIC_LIMIT
2060#ifndef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
2061template <
bool __Param__0,
2063#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 0
2064 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
2067#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 1
2068 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
2071#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 2
2072 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
2075#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 3
2076 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
2079#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 4
2080 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
2083#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 5
2084 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
2087#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 6
2088 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
2091#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 7
2092 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
2095#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 8
2096 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
2099#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 9
2100 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
2103#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 10
2104 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
2107#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 11
2108 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
2111#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 12
2112 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
2114 ,
class = BSLS_COMPILERFEATURES_NILT>
2115struct InvokeResult_FunctorDeduction;
2117#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 0
2118template <
bool __Param__0,
class t_FN>
2119struct InvokeResult_FunctorDeduction<__Param__0, t_FN
2120 > : InvokeResult_ImpUtils {
2127 uncv(myDeclval<t_FN>()()))),
2128 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2130 checkLvalue(myDeclval<t_FN>()(), 0)),
2131 k_IS_CONST_PTR = k_IS_POINTER &&
2133 myDeclval<t_FN>()())),
2134 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2138 uncv(unpoint(myDeclval<t_FN>()())))),
2140 unpoint(myDeclval<t_FN>()()))),
2142 unpoint(myDeclval<t_FN>()()))),
2143 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2144 (
int)InvokeResult_Index::e_OTHER)
2148 ! k_CANT_DEDUCE_TYPE,
2149 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2151 >::type UnqualTargetType;
2154 InvokeResult_AddCVRef<UnqualTargetType,
2155 static_cast<bool>(k_IS_CONST_TARGET)
2156 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2157 static_cast<bool>(k_IS_VOLATILE_TARGET)
2158 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2159 false>::type CVQualTargetType;
2163 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2165 CVQualTargetType>::type UnqualType;
2168 InvokeResult_AddCVRef<
2170 static_cast<bool>(k_IS_CONST_PTR)
2171 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2172 static_cast<bool>(k_IS_VOLATILE_PTR)
2173 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2174 static_cast<bool>(k_IS_LVALUE)
2175 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2182#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 1
2183template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01>
2184struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01
2185 > : InvokeResult_ImpUtils {
2192 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())))),
2193 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2195 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>()), 0)),
2196 k_IS_CONST_PTR = k_IS_POINTER &&
2198 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>()))),
2199 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2201 myDeclval<t_ARGTYPES_01>()))),
2203 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>()))))),
2205 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())))),
2207 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())))),
2208 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2209 (
int)InvokeResult_Index::e_OTHER)
2213 ! k_CANT_DEDUCE_TYPE,
2214 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2216 >::type UnqualTargetType;
2219 InvokeResult_AddCVRef<UnqualTargetType,
2220 static_cast<bool>(k_IS_CONST_TARGET)
2221 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2222 static_cast<bool>(k_IS_VOLATILE_TARGET)
2223 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2224 false>::type CVQualTargetType;
2228 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2230 CVQualTargetType>::type UnqualType;
2233 InvokeResult_AddCVRef<
2235 static_cast<bool>(k_IS_CONST_PTR)
2236 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2237 static_cast<bool>(k_IS_VOLATILE_PTR)
2238 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2239 static_cast<bool>(k_IS_LVALUE)
2240 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2247#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 2
2248template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2249 class t_ARGTYPES_02>
2250struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2252 > : InvokeResult_ImpUtils {
2259 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2260 myDeclval<t_ARGTYPES_02>())))),
2261 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2263 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2264 myDeclval<t_ARGTYPES_02>()), 0)),
2265 k_IS_CONST_PTR = k_IS_POINTER &&
2267 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2268 myDeclval<t_ARGTYPES_02>()))),
2269 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2271 myDeclval<t_ARGTYPES_01>(),
2272 myDeclval<t_ARGTYPES_02>()))),
2274 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2275 myDeclval<t_ARGTYPES_02>()))))),
2277 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2278 myDeclval<t_ARGTYPES_02>())))),
2280 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2281 myDeclval<t_ARGTYPES_02>())))),
2282 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2283 (
int)InvokeResult_Index::e_OTHER)
2287 ! k_CANT_DEDUCE_TYPE,
2288 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2290 >::type UnqualTargetType;
2293 InvokeResult_AddCVRef<UnqualTargetType,
2294 static_cast<bool>(k_IS_CONST_TARGET)
2295 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2296 static_cast<bool>(k_IS_VOLATILE_TARGET)
2297 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2298 false>::type CVQualTargetType;
2302 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2304 CVQualTargetType>::type UnqualType;
2307 InvokeResult_AddCVRef<
2309 static_cast<bool>(k_IS_CONST_PTR)
2310 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2311 static_cast<bool>(k_IS_VOLATILE_PTR)
2312 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2313 static_cast<bool>(k_IS_LVALUE)
2314 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2321#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 3
2322template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2323 class t_ARGTYPES_02,
2324 class t_ARGTYPES_03>
2325struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2328 > : InvokeResult_ImpUtils {
2335 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2336 myDeclval<t_ARGTYPES_02>(),
2337 myDeclval<t_ARGTYPES_03>())))),
2338 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2340 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2341 myDeclval<t_ARGTYPES_02>(),
2342 myDeclval<t_ARGTYPES_03>()), 0)),
2343 k_IS_CONST_PTR = k_IS_POINTER &&
2345 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2346 myDeclval<t_ARGTYPES_02>(),
2347 myDeclval<t_ARGTYPES_03>()))),
2348 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2350 myDeclval<t_ARGTYPES_01>(),
2351 myDeclval<t_ARGTYPES_02>(),
2352 myDeclval<t_ARGTYPES_03>()))),
2354 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2355 myDeclval<t_ARGTYPES_02>(),
2356 myDeclval<t_ARGTYPES_03>()))))),
2358 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2359 myDeclval<t_ARGTYPES_02>(),
2360 myDeclval<t_ARGTYPES_03>())))),
2362 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2363 myDeclval<t_ARGTYPES_02>(),
2364 myDeclval<t_ARGTYPES_03>())))),
2365 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2366 (
int)InvokeResult_Index::e_OTHER)
2370 ! k_CANT_DEDUCE_TYPE,
2371 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2373 >::type UnqualTargetType;
2376 InvokeResult_AddCVRef<UnqualTargetType,
2377 static_cast<bool>(k_IS_CONST_TARGET)
2378 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2379 static_cast<bool>(k_IS_VOLATILE_TARGET)
2380 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2381 false>::type CVQualTargetType;
2385 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2387 CVQualTargetType>::type UnqualType;
2390 InvokeResult_AddCVRef<
2392 static_cast<bool>(k_IS_CONST_PTR)
2393 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2394 static_cast<bool>(k_IS_VOLATILE_PTR)
2395 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2396 static_cast<bool>(k_IS_LVALUE)
2397 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2404#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 4
2405template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2406 class t_ARGTYPES_02,
2407 class t_ARGTYPES_03,
2408 class t_ARGTYPES_04>
2409struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2413 > : InvokeResult_ImpUtils {
2420 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2421 myDeclval<t_ARGTYPES_02>(),
2422 myDeclval<t_ARGTYPES_03>(),
2423 myDeclval<t_ARGTYPES_04>())))),
2424 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2426 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2427 myDeclval<t_ARGTYPES_02>(),
2428 myDeclval<t_ARGTYPES_03>(),
2429 myDeclval<t_ARGTYPES_04>()), 0)),
2430 k_IS_CONST_PTR = k_IS_POINTER &&
2432 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2433 myDeclval<t_ARGTYPES_02>(),
2434 myDeclval<t_ARGTYPES_03>(),
2435 myDeclval<t_ARGTYPES_04>()))),
2436 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2438 myDeclval<t_ARGTYPES_01>(),
2439 myDeclval<t_ARGTYPES_02>(),
2440 myDeclval<t_ARGTYPES_03>(),
2441 myDeclval<t_ARGTYPES_04>()))),
2443 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2444 myDeclval<t_ARGTYPES_02>(),
2445 myDeclval<t_ARGTYPES_03>(),
2446 myDeclval<t_ARGTYPES_04>()))))),
2448 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2449 myDeclval<t_ARGTYPES_02>(),
2450 myDeclval<t_ARGTYPES_03>(),
2451 myDeclval<t_ARGTYPES_04>())))),
2453 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2454 myDeclval<t_ARGTYPES_02>(),
2455 myDeclval<t_ARGTYPES_03>(),
2456 myDeclval<t_ARGTYPES_04>())))),
2457 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2458 (
int)InvokeResult_Index::e_OTHER)
2462 ! k_CANT_DEDUCE_TYPE,
2463 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2465 >::type UnqualTargetType;
2468 InvokeResult_AddCVRef<UnqualTargetType,
2469 static_cast<bool>(k_IS_CONST_TARGET)
2470 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2471 static_cast<bool>(k_IS_VOLATILE_TARGET)
2472 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2473 false>::type CVQualTargetType;
2477 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2479 CVQualTargetType>::type UnqualType;
2482 InvokeResult_AddCVRef<
2484 static_cast<bool>(k_IS_CONST_PTR)
2485 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2486 static_cast<bool>(k_IS_VOLATILE_PTR)
2487 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2488 static_cast<bool>(k_IS_LVALUE)
2489 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2496#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 5
2497template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2498 class t_ARGTYPES_02,
2499 class t_ARGTYPES_03,
2500 class t_ARGTYPES_04,
2501 class t_ARGTYPES_05>
2502struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2507 > : InvokeResult_ImpUtils {
2514 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2515 myDeclval<t_ARGTYPES_02>(),
2516 myDeclval<t_ARGTYPES_03>(),
2517 myDeclval<t_ARGTYPES_04>(),
2518 myDeclval<t_ARGTYPES_05>())))),
2519 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2521 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2522 myDeclval<t_ARGTYPES_02>(),
2523 myDeclval<t_ARGTYPES_03>(),
2524 myDeclval<t_ARGTYPES_04>(),
2525 myDeclval<t_ARGTYPES_05>()), 0)),
2526 k_IS_CONST_PTR = k_IS_POINTER &&
2528 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2529 myDeclval<t_ARGTYPES_02>(),
2530 myDeclval<t_ARGTYPES_03>(),
2531 myDeclval<t_ARGTYPES_04>(),
2532 myDeclval<t_ARGTYPES_05>()))),
2533 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2535 myDeclval<t_ARGTYPES_01>(),
2536 myDeclval<t_ARGTYPES_02>(),
2537 myDeclval<t_ARGTYPES_03>(),
2538 myDeclval<t_ARGTYPES_04>(),
2539 myDeclval<t_ARGTYPES_05>()))),
2541 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2542 myDeclval<t_ARGTYPES_02>(),
2543 myDeclval<t_ARGTYPES_03>(),
2544 myDeclval<t_ARGTYPES_04>(),
2545 myDeclval<t_ARGTYPES_05>()))))),
2547 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2548 myDeclval<t_ARGTYPES_02>(),
2549 myDeclval<t_ARGTYPES_03>(),
2550 myDeclval<t_ARGTYPES_04>(),
2551 myDeclval<t_ARGTYPES_05>())))),
2553 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2554 myDeclval<t_ARGTYPES_02>(),
2555 myDeclval<t_ARGTYPES_03>(),
2556 myDeclval<t_ARGTYPES_04>(),
2557 myDeclval<t_ARGTYPES_05>())))),
2558 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2559 (
int)InvokeResult_Index::e_OTHER)
2563 ! k_CANT_DEDUCE_TYPE,
2564 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2566 >::type UnqualTargetType;
2569 InvokeResult_AddCVRef<UnqualTargetType,
2570 static_cast<bool>(k_IS_CONST_TARGET)
2571 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2572 static_cast<bool>(k_IS_VOLATILE_TARGET)
2573 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2574 false>::type CVQualTargetType;
2578 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2580 CVQualTargetType>::type UnqualType;
2583 InvokeResult_AddCVRef<
2585 static_cast<bool>(k_IS_CONST_PTR)
2586 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2587 static_cast<bool>(k_IS_VOLATILE_PTR)
2588 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2589 static_cast<bool>(k_IS_LVALUE)
2590 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2597#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 6
2598template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2599 class t_ARGTYPES_02,
2600 class t_ARGTYPES_03,
2601 class t_ARGTYPES_04,
2602 class t_ARGTYPES_05,
2603 class t_ARGTYPES_06>
2604struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2610 > : InvokeResult_ImpUtils {
2617 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2618 myDeclval<t_ARGTYPES_02>(),
2619 myDeclval<t_ARGTYPES_03>(),
2620 myDeclval<t_ARGTYPES_04>(),
2621 myDeclval<t_ARGTYPES_05>(),
2622 myDeclval<t_ARGTYPES_06>())))),
2623 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2625 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2626 myDeclval<t_ARGTYPES_02>(),
2627 myDeclval<t_ARGTYPES_03>(),
2628 myDeclval<t_ARGTYPES_04>(),
2629 myDeclval<t_ARGTYPES_05>(),
2630 myDeclval<t_ARGTYPES_06>()), 0)),
2631 k_IS_CONST_PTR = k_IS_POINTER &&
2633 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2634 myDeclval<t_ARGTYPES_02>(),
2635 myDeclval<t_ARGTYPES_03>(),
2636 myDeclval<t_ARGTYPES_04>(),
2637 myDeclval<t_ARGTYPES_05>(),
2638 myDeclval<t_ARGTYPES_06>()))),
2639 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2641 myDeclval<t_ARGTYPES_01>(),
2642 myDeclval<t_ARGTYPES_02>(),
2643 myDeclval<t_ARGTYPES_03>(),
2644 myDeclval<t_ARGTYPES_04>(),
2645 myDeclval<t_ARGTYPES_05>(),
2646 myDeclval<t_ARGTYPES_06>()))),
2648 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2649 myDeclval<t_ARGTYPES_02>(),
2650 myDeclval<t_ARGTYPES_03>(),
2651 myDeclval<t_ARGTYPES_04>(),
2652 myDeclval<t_ARGTYPES_05>(),
2653 myDeclval<t_ARGTYPES_06>()))))),
2655 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2656 myDeclval<t_ARGTYPES_02>(),
2657 myDeclval<t_ARGTYPES_03>(),
2658 myDeclval<t_ARGTYPES_04>(),
2659 myDeclval<t_ARGTYPES_05>(),
2660 myDeclval<t_ARGTYPES_06>())))),
2662 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2663 myDeclval<t_ARGTYPES_02>(),
2664 myDeclval<t_ARGTYPES_03>(),
2665 myDeclval<t_ARGTYPES_04>(),
2666 myDeclval<t_ARGTYPES_05>(),
2667 myDeclval<t_ARGTYPES_06>())))),
2668 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2669 (
int)InvokeResult_Index::e_OTHER)
2673 ! k_CANT_DEDUCE_TYPE,
2674 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2676 >::type UnqualTargetType;
2679 InvokeResult_AddCVRef<UnqualTargetType,
2680 static_cast<bool>(k_IS_CONST_TARGET)
2681 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2682 static_cast<bool>(k_IS_VOLATILE_TARGET)
2683 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2684 false>::type CVQualTargetType;
2688 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2690 CVQualTargetType>::type UnqualType;
2693 InvokeResult_AddCVRef<
2695 static_cast<bool>(k_IS_CONST_PTR)
2696 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2697 static_cast<bool>(k_IS_VOLATILE_PTR)
2698 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2699 static_cast<bool>(k_IS_LVALUE)
2700 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2707#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 7
2708template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2709 class t_ARGTYPES_02,
2710 class t_ARGTYPES_03,
2711 class t_ARGTYPES_04,
2712 class t_ARGTYPES_05,
2713 class t_ARGTYPES_06,
2714 class t_ARGTYPES_07>
2715struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2722 > : InvokeResult_ImpUtils {
2729 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2730 myDeclval<t_ARGTYPES_02>(),
2731 myDeclval<t_ARGTYPES_03>(),
2732 myDeclval<t_ARGTYPES_04>(),
2733 myDeclval<t_ARGTYPES_05>(),
2734 myDeclval<t_ARGTYPES_06>(),
2735 myDeclval<t_ARGTYPES_07>())))),
2736 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2738 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2739 myDeclval<t_ARGTYPES_02>(),
2740 myDeclval<t_ARGTYPES_03>(),
2741 myDeclval<t_ARGTYPES_04>(),
2742 myDeclval<t_ARGTYPES_05>(),
2743 myDeclval<t_ARGTYPES_06>(),
2744 myDeclval<t_ARGTYPES_07>()), 0)),
2745 k_IS_CONST_PTR = k_IS_POINTER &&
2747 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2748 myDeclval<t_ARGTYPES_02>(),
2749 myDeclval<t_ARGTYPES_03>(),
2750 myDeclval<t_ARGTYPES_04>(),
2751 myDeclval<t_ARGTYPES_05>(),
2752 myDeclval<t_ARGTYPES_06>(),
2753 myDeclval<t_ARGTYPES_07>()))),
2754 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2756 myDeclval<t_ARGTYPES_01>(),
2757 myDeclval<t_ARGTYPES_02>(),
2758 myDeclval<t_ARGTYPES_03>(),
2759 myDeclval<t_ARGTYPES_04>(),
2760 myDeclval<t_ARGTYPES_05>(),
2761 myDeclval<t_ARGTYPES_06>(),
2762 myDeclval<t_ARGTYPES_07>()))),
2764 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2765 myDeclval<t_ARGTYPES_02>(),
2766 myDeclval<t_ARGTYPES_03>(),
2767 myDeclval<t_ARGTYPES_04>(),
2768 myDeclval<t_ARGTYPES_05>(),
2769 myDeclval<t_ARGTYPES_06>(),
2770 myDeclval<t_ARGTYPES_07>()))))),
2772 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2773 myDeclval<t_ARGTYPES_02>(),
2774 myDeclval<t_ARGTYPES_03>(),
2775 myDeclval<t_ARGTYPES_04>(),
2776 myDeclval<t_ARGTYPES_05>(),
2777 myDeclval<t_ARGTYPES_06>(),
2778 myDeclval<t_ARGTYPES_07>())))),
2780 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2781 myDeclval<t_ARGTYPES_02>(),
2782 myDeclval<t_ARGTYPES_03>(),
2783 myDeclval<t_ARGTYPES_04>(),
2784 myDeclval<t_ARGTYPES_05>(),
2785 myDeclval<t_ARGTYPES_06>(),
2786 myDeclval<t_ARGTYPES_07>())))),
2787 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2788 (
int)InvokeResult_Index::e_OTHER)
2792 ! k_CANT_DEDUCE_TYPE,
2793 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2795 >::type UnqualTargetType;
2798 InvokeResult_AddCVRef<UnqualTargetType,
2799 static_cast<bool>(k_IS_CONST_TARGET)
2800 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2801 static_cast<bool>(k_IS_VOLATILE_TARGET)
2802 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2803 false>::type CVQualTargetType;
2807 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2809 CVQualTargetType>::type UnqualType;
2812 InvokeResult_AddCVRef<
2814 static_cast<bool>(k_IS_CONST_PTR)
2815 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2816 static_cast<bool>(k_IS_VOLATILE_PTR)
2817 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2818 static_cast<bool>(k_IS_LVALUE)
2819 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2826#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 8
2827template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2828 class t_ARGTYPES_02,
2829 class t_ARGTYPES_03,
2830 class t_ARGTYPES_04,
2831 class t_ARGTYPES_05,
2832 class t_ARGTYPES_06,
2833 class t_ARGTYPES_07,
2834 class t_ARGTYPES_08>
2835struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2843 > : InvokeResult_ImpUtils {
2850 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2851 myDeclval<t_ARGTYPES_02>(),
2852 myDeclval<t_ARGTYPES_03>(),
2853 myDeclval<t_ARGTYPES_04>(),
2854 myDeclval<t_ARGTYPES_05>(),
2855 myDeclval<t_ARGTYPES_06>(),
2856 myDeclval<t_ARGTYPES_07>(),
2857 myDeclval<t_ARGTYPES_08>())))),
2858 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2860 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2861 myDeclval<t_ARGTYPES_02>(),
2862 myDeclval<t_ARGTYPES_03>(),
2863 myDeclval<t_ARGTYPES_04>(),
2864 myDeclval<t_ARGTYPES_05>(),
2865 myDeclval<t_ARGTYPES_06>(),
2866 myDeclval<t_ARGTYPES_07>(),
2867 myDeclval<t_ARGTYPES_08>()), 0)),
2868 k_IS_CONST_PTR = k_IS_POINTER &&
2870 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2871 myDeclval<t_ARGTYPES_02>(),
2872 myDeclval<t_ARGTYPES_03>(),
2873 myDeclval<t_ARGTYPES_04>(),
2874 myDeclval<t_ARGTYPES_05>(),
2875 myDeclval<t_ARGTYPES_06>(),
2876 myDeclval<t_ARGTYPES_07>(),
2877 myDeclval<t_ARGTYPES_08>()))),
2878 k_IS_VOLATILE_PTR = k_IS_POINTER &&
2880 myDeclval<t_ARGTYPES_01>(),
2881 myDeclval<t_ARGTYPES_02>(),
2882 myDeclval<t_ARGTYPES_03>(),
2883 myDeclval<t_ARGTYPES_04>(),
2884 myDeclval<t_ARGTYPES_05>(),
2885 myDeclval<t_ARGTYPES_06>(),
2886 myDeclval<t_ARGTYPES_07>(),
2887 myDeclval<t_ARGTYPES_08>()))),
2889 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2890 myDeclval<t_ARGTYPES_02>(),
2891 myDeclval<t_ARGTYPES_03>(),
2892 myDeclval<t_ARGTYPES_04>(),
2893 myDeclval<t_ARGTYPES_05>(),
2894 myDeclval<t_ARGTYPES_06>(),
2895 myDeclval<t_ARGTYPES_07>(),
2896 myDeclval<t_ARGTYPES_08>()))))),
2898 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2899 myDeclval<t_ARGTYPES_02>(),
2900 myDeclval<t_ARGTYPES_03>(),
2901 myDeclval<t_ARGTYPES_04>(),
2902 myDeclval<t_ARGTYPES_05>(),
2903 myDeclval<t_ARGTYPES_06>(),
2904 myDeclval<t_ARGTYPES_07>(),
2905 myDeclval<t_ARGTYPES_08>())))),
2907 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
2908 myDeclval<t_ARGTYPES_02>(),
2909 myDeclval<t_ARGTYPES_03>(),
2910 myDeclval<t_ARGTYPES_04>(),
2911 myDeclval<t_ARGTYPES_05>(),
2912 myDeclval<t_ARGTYPES_06>(),
2913 myDeclval<t_ARGTYPES_07>(),
2914 myDeclval<t_ARGTYPES_08>())))),
2915 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
2916 (
int)InvokeResult_Index::e_OTHER)
2920 ! k_CANT_DEDUCE_TYPE,
2921 typename InvokeResult_Type<k_TARGET_INDEX>::type,
2923 >::type UnqualTargetType;
2926 InvokeResult_AddCVRef<UnqualTargetType,
2927 static_cast<bool>(k_IS_CONST_TARGET)
2928 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2929 static_cast<bool>(k_IS_VOLATILE_TARGET)
2930 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2931 false>::type CVQualTargetType;
2935 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2937 CVQualTargetType>::type UnqualType;
2940 InvokeResult_AddCVRef<
2942 static_cast<bool>(k_IS_CONST_PTR)
2943 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2944 static_cast<bool>(k_IS_VOLATILE_PTR)
2945 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
2946 static_cast<bool>(k_IS_LVALUE)
2947 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
2954#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 9
2955template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
2956 class t_ARGTYPES_02,
2957 class t_ARGTYPES_03,
2958 class t_ARGTYPES_04,
2959 class t_ARGTYPES_05,
2960 class t_ARGTYPES_06,
2961 class t_ARGTYPES_07,
2962 class t_ARGTYPES_08,
2963 class t_ARGTYPES_09>
2964struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
2973 > : InvokeResult_ImpUtils {
2980 uncv(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>())))),
2989 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
2991 checkLvalue(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>()), 0)),
3000 k_IS_CONST_PTR = k_IS_POINTER &&
3002 myDeclval<t_FN>()(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>()))),
3011 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3013 myDeclval<t_ARGTYPES_01>(),
3014 myDeclval<t_ARGTYPES_02>(),
3015 myDeclval<t_ARGTYPES_03>(),
3016 myDeclval<t_ARGTYPES_04>(),
3017 myDeclval<t_ARGTYPES_05>(),
3018 myDeclval<t_ARGTYPES_06>(),
3019 myDeclval<t_ARGTYPES_07>(),
3020 myDeclval<t_ARGTYPES_08>(),
3021 myDeclval<t_ARGTYPES_09>()))),
3023 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3024 myDeclval<t_ARGTYPES_02>(),
3025 myDeclval<t_ARGTYPES_03>(),
3026 myDeclval<t_ARGTYPES_04>(),
3027 myDeclval<t_ARGTYPES_05>(),
3028 myDeclval<t_ARGTYPES_06>(),
3029 myDeclval<t_ARGTYPES_07>(),
3030 myDeclval<t_ARGTYPES_08>(),
3031 myDeclval<t_ARGTYPES_09>()))))),
3033 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3034 myDeclval<t_ARGTYPES_02>(),
3035 myDeclval<t_ARGTYPES_03>(),
3036 myDeclval<t_ARGTYPES_04>(),
3037 myDeclval<t_ARGTYPES_05>(),
3038 myDeclval<t_ARGTYPES_06>(),
3039 myDeclval<t_ARGTYPES_07>(),
3040 myDeclval<t_ARGTYPES_08>(),
3041 myDeclval<t_ARGTYPES_09>())))),
3043 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3044 myDeclval<t_ARGTYPES_02>(),
3045 myDeclval<t_ARGTYPES_03>(),
3046 myDeclval<t_ARGTYPES_04>(),
3047 myDeclval<t_ARGTYPES_05>(),
3048 myDeclval<t_ARGTYPES_06>(),
3049 myDeclval<t_ARGTYPES_07>(),
3050 myDeclval<t_ARGTYPES_08>(),
3051 myDeclval<t_ARGTYPES_09>())))),
3052 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3053 (
int)InvokeResult_Index::e_OTHER)
3057 ! k_CANT_DEDUCE_TYPE,
3058 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3060 >::type UnqualTargetType;
3063 InvokeResult_AddCVRef<UnqualTargetType,
3064 static_cast<bool>(k_IS_CONST_TARGET)
3065 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3066 static_cast<bool>(k_IS_VOLATILE_TARGET)
3067 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3068 false>::type CVQualTargetType;
3072 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3074 CVQualTargetType>::type UnqualType;
3077 InvokeResult_AddCVRef<
3079 static_cast<bool>(k_IS_CONST_PTR)
3080 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3081 static_cast<bool>(k_IS_VOLATILE_PTR)
3082 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3083 static_cast<bool>(k_IS_LVALUE)
3084 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3091#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 10
3092template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
3093 class t_ARGTYPES_02,
3094 class t_ARGTYPES_03,
3095 class t_ARGTYPES_04,
3096 class t_ARGTYPES_05,
3097 class t_ARGTYPES_06,
3098 class t_ARGTYPES_07,
3099 class t_ARGTYPES_08,
3100 class t_ARGTYPES_09,
3101 class t_ARGTYPES_10>
3102struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
3112 > : InvokeResult_ImpUtils {
3119 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3120 myDeclval<t_ARGTYPES_02>(),
3121 myDeclval<t_ARGTYPES_03>(),
3122 myDeclval<t_ARGTYPES_04>(),
3123 myDeclval<t_ARGTYPES_05>(),
3124 myDeclval<t_ARGTYPES_06>(),
3125 myDeclval<t_ARGTYPES_07>(),
3126 myDeclval<t_ARGTYPES_08>(),
3127 myDeclval<t_ARGTYPES_09>(),
3128 myDeclval<t_ARGTYPES_10>())))),
3129 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
3131 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3132 myDeclval<t_ARGTYPES_02>(),
3133 myDeclval<t_ARGTYPES_03>(),
3134 myDeclval<t_ARGTYPES_04>(),
3135 myDeclval<t_ARGTYPES_05>(),
3136 myDeclval<t_ARGTYPES_06>(),
3137 myDeclval<t_ARGTYPES_07>(),
3138 myDeclval<t_ARGTYPES_08>(),
3139 myDeclval<t_ARGTYPES_09>(),
3140 myDeclval<t_ARGTYPES_10>()), 0)),
3141 k_IS_CONST_PTR = k_IS_POINTER &&
3143 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3144 myDeclval<t_ARGTYPES_02>(),
3145 myDeclval<t_ARGTYPES_03>(),
3146 myDeclval<t_ARGTYPES_04>(),
3147 myDeclval<t_ARGTYPES_05>(),
3148 myDeclval<t_ARGTYPES_06>(),
3149 myDeclval<t_ARGTYPES_07>(),
3150 myDeclval<t_ARGTYPES_08>(),
3151 myDeclval<t_ARGTYPES_09>(),
3152 myDeclval<t_ARGTYPES_10>()))),
3153 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3155 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 uncv(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>())))),
3188 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3189 myDeclval<t_ARGTYPES_02>(),
3190 myDeclval<t_ARGTYPES_03>(),
3191 myDeclval<t_ARGTYPES_04>(),
3192 myDeclval<t_ARGTYPES_05>(),
3193 myDeclval<t_ARGTYPES_06>(),
3194 myDeclval<t_ARGTYPES_07>(),
3195 myDeclval<t_ARGTYPES_08>(),
3196 myDeclval<t_ARGTYPES_09>(),
3197 myDeclval<t_ARGTYPES_10>())))),
3198 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3199 (
int)InvokeResult_Index::e_OTHER)
3203 ! k_CANT_DEDUCE_TYPE,
3204 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3206 >::type UnqualTargetType;
3209 InvokeResult_AddCVRef<UnqualTargetType,
3210 static_cast<bool>(k_IS_CONST_TARGET)
3211 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3212 static_cast<bool>(k_IS_VOLATILE_TARGET)
3213 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3214 false>::type CVQualTargetType;
3218 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3220 CVQualTargetType>::type UnqualType;
3223 InvokeResult_AddCVRef<
3225 static_cast<bool>(k_IS_CONST_PTR)
3226 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3227 static_cast<bool>(k_IS_VOLATILE_PTR)
3228 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3229 static_cast<bool>(k_IS_LVALUE)
3230 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3237#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 11
3238template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
3239 class t_ARGTYPES_02,
3240 class t_ARGTYPES_03,
3241 class t_ARGTYPES_04,
3242 class t_ARGTYPES_05,
3243 class t_ARGTYPES_06,
3244 class t_ARGTYPES_07,
3245 class t_ARGTYPES_08,
3246 class t_ARGTYPES_09,
3247 class t_ARGTYPES_10,
3248 class t_ARGTYPES_11>
3249struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
3260 > : InvokeResult_ImpUtils {
3267 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3268 myDeclval<t_ARGTYPES_02>(),
3269 myDeclval<t_ARGTYPES_03>(),
3270 myDeclval<t_ARGTYPES_04>(),
3271 myDeclval<t_ARGTYPES_05>(),
3272 myDeclval<t_ARGTYPES_06>(),
3273 myDeclval<t_ARGTYPES_07>(),
3274 myDeclval<t_ARGTYPES_08>(),
3275 myDeclval<t_ARGTYPES_09>(),
3276 myDeclval<t_ARGTYPES_10>(),
3277 myDeclval<t_ARGTYPES_11>())))),
3278 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
3280 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3281 myDeclval<t_ARGTYPES_02>(),
3282 myDeclval<t_ARGTYPES_03>(),
3283 myDeclval<t_ARGTYPES_04>(),
3284 myDeclval<t_ARGTYPES_05>(),
3285 myDeclval<t_ARGTYPES_06>(),
3286 myDeclval<t_ARGTYPES_07>(),
3287 myDeclval<t_ARGTYPES_08>(),
3288 myDeclval<t_ARGTYPES_09>(),
3289 myDeclval<t_ARGTYPES_10>(),
3290 myDeclval<t_ARGTYPES_11>()), 0)),
3291 k_IS_CONST_PTR = k_IS_POINTER &&
3293 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3294 myDeclval<t_ARGTYPES_02>(),
3295 myDeclval<t_ARGTYPES_03>(),
3296 myDeclval<t_ARGTYPES_04>(),
3297 myDeclval<t_ARGTYPES_05>(),
3298 myDeclval<t_ARGTYPES_06>(),
3299 myDeclval<t_ARGTYPES_07>(),
3300 myDeclval<t_ARGTYPES_08>(),
3301 myDeclval<t_ARGTYPES_09>(),
3302 myDeclval<t_ARGTYPES_10>(),
3303 myDeclval<t_ARGTYPES_11>()))),
3304 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3306 myDeclval<t_ARGTYPES_01>(),
3307 myDeclval<t_ARGTYPES_02>(),
3308 myDeclval<t_ARGTYPES_03>(),
3309 myDeclval<t_ARGTYPES_04>(),
3310 myDeclval<t_ARGTYPES_05>(),
3311 myDeclval<t_ARGTYPES_06>(),
3312 myDeclval<t_ARGTYPES_07>(),
3313 myDeclval<t_ARGTYPES_08>(),
3314 myDeclval<t_ARGTYPES_09>(),
3315 myDeclval<t_ARGTYPES_10>(),
3316 myDeclval<t_ARGTYPES_11>()))),
3318 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3319 myDeclval<t_ARGTYPES_02>(),
3320 myDeclval<t_ARGTYPES_03>(),
3321 myDeclval<t_ARGTYPES_04>(),
3322 myDeclval<t_ARGTYPES_05>(),
3323 myDeclval<t_ARGTYPES_06>(),
3324 myDeclval<t_ARGTYPES_07>(),
3325 myDeclval<t_ARGTYPES_08>(),
3326 myDeclval<t_ARGTYPES_09>(),
3327 myDeclval<t_ARGTYPES_10>(),
3328 myDeclval<t_ARGTYPES_11>()))))),
3330 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3331 myDeclval<t_ARGTYPES_02>(),
3332 myDeclval<t_ARGTYPES_03>(),
3333 myDeclval<t_ARGTYPES_04>(),
3334 myDeclval<t_ARGTYPES_05>(),
3335 myDeclval<t_ARGTYPES_06>(),
3336 myDeclval<t_ARGTYPES_07>(),
3337 myDeclval<t_ARGTYPES_08>(),
3338 myDeclval<t_ARGTYPES_09>(),
3339 myDeclval<t_ARGTYPES_10>(),
3340 myDeclval<t_ARGTYPES_11>())))),
3342 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3343 myDeclval<t_ARGTYPES_02>(),
3344 myDeclval<t_ARGTYPES_03>(),
3345 myDeclval<t_ARGTYPES_04>(),
3346 myDeclval<t_ARGTYPES_05>(),
3347 myDeclval<t_ARGTYPES_06>(),
3348 myDeclval<t_ARGTYPES_07>(),
3349 myDeclval<t_ARGTYPES_08>(),
3350 myDeclval<t_ARGTYPES_09>(),
3351 myDeclval<t_ARGTYPES_10>(),
3352 myDeclval<t_ARGTYPES_11>())))),
3353 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3354 (
int)InvokeResult_Index::e_OTHER)
3358 ! k_CANT_DEDUCE_TYPE,
3359 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3361 >::type UnqualTargetType;
3364 InvokeResult_AddCVRef<UnqualTargetType,
3365 static_cast<bool>(k_IS_CONST_TARGET)
3366 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3367 static_cast<bool>(k_IS_VOLATILE_TARGET)
3368 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3369 false>::type CVQualTargetType;
3373 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3375 CVQualTargetType>::type UnqualType;
3378 InvokeResult_AddCVRef<
3380 static_cast<bool>(k_IS_CONST_PTR)
3381 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3382 static_cast<bool>(k_IS_VOLATILE_PTR)
3383 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3384 static_cast<bool>(k_IS_LVALUE)
3385 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3392#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 12
3393template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
3394 class t_ARGTYPES_02,
3395 class t_ARGTYPES_03,
3396 class t_ARGTYPES_04,
3397 class t_ARGTYPES_05,
3398 class t_ARGTYPES_06,
3399 class t_ARGTYPES_07,
3400 class t_ARGTYPES_08,
3401 class t_ARGTYPES_09,
3402 class t_ARGTYPES_10,
3403 class t_ARGTYPES_11,
3404 class t_ARGTYPES_12>
3405struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
3417 > : InvokeResult_ImpUtils {
3424 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3425 myDeclval<t_ARGTYPES_02>(),
3426 myDeclval<t_ARGTYPES_03>(),
3427 myDeclval<t_ARGTYPES_04>(),
3428 myDeclval<t_ARGTYPES_05>(),
3429 myDeclval<t_ARGTYPES_06>(),
3430 myDeclval<t_ARGTYPES_07>(),
3431 myDeclval<t_ARGTYPES_08>(),
3432 myDeclval<t_ARGTYPES_09>(),
3433 myDeclval<t_ARGTYPES_10>(),
3434 myDeclval<t_ARGTYPES_11>(),
3435 myDeclval<t_ARGTYPES_12>())))),
3436 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
3438 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3439 myDeclval<t_ARGTYPES_02>(),
3440 myDeclval<t_ARGTYPES_03>(),
3441 myDeclval<t_ARGTYPES_04>(),
3442 myDeclval<t_ARGTYPES_05>(),
3443 myDeclval<t_ARGTYPES_06>(),
3444 myDeclval<t_ARGTYPES_07>(),
3445 myDeclval<t_ARGTYPES_08>(),
3446 myDeclval<t_ARGTYPES_09>(),
3447 myDeclval<t_ARGTYPES_10>(),
3448 myDeclval<t_ARGTYPES_11>(),
3449 myDeclval<t_ARGTYPES_12>()), 0)),
3450 k_IS_CONST_PTR = k_IS_POINTER &&
3452 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3453 myDeclval<t_ARGTYPES_02>(),
3454 myDeclval<t_ARGTYPES_03>(),
3455 myDeclval<t_ARGTYPES_04>(),
3456 myDeclval<t_ARGTYPES_05>(),
3457 myDeclval<t_ARGTYPES_06>(),
3458 myDeclval<t_ARGTYPES_07>(),
3459 myDeclval<t_ARGTYPES_08>(),
3460 myDeclval<t_ARGTYPES_09>(),
3461 myDeclval<t_ARGTYPES_10>(),
3462 myDeclval<t_ARGTYPES_11>(),
3463 myDeclval<t_ARGTYPES_12>()))),
3464 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3466 myDeclval<t_ARGTYPES_01>(),
3467 myDeclval<t_ARGTYPES_02>(),
3468 myDeclval<t_ARGTYPES_03>(),
3469 myDeclval<t_ARGTYPES_04>(),
3470 myDeclval<t_ARGTYPES_05>(),
3471 myDeclval<t_ARGTYPES_06>(),
3472 myDeclval<t_ARGTYPES_07>(),
3473 myDeclval<t_ARGTYPES_08>(),
3474 myDeclval<t_ARGTYPES_09>(),
3475 myDeclval<t_ARGTYPES_10>(),
3476 myDeclval<t_ARGTYPES_11>(),
3477 myDeclval<t_ARGTYPES_12>()))),
3479 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3480 myDeclval<t_ARGTYPES_02>(),
3481 myDeclval<t_ARGTYPES_03>(),
3482 myDeclval<t_ARGTYPES_04>(),
3483 myDeclval<t_ARGTYPES_05>(),
3484 myDeclval<t_ARGTYPES_06>(),
3485 myDeclval<t_ARGTYPES_07>(),
3486 myDeclval<t_ARGTYPES_08>(),
3487 myDeclval<t_ARGTYPES_09>(),
3488 myDeclval<t_ARGTYPES_10>(),
3489 myDeclval<t_ARGTYPES_11>(),
3490 myDeclval<t_ARGTYPES_12>()))))),
3492 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3493 myDeclval<t_ARGTYPES_02>(),
3494 myDeclval<t_ARGTYPES_03>(),
3495 myDeclval<t_ARGTYPES_04>(),
3496 myDeclval<t_ARGTYPES_05>(),
3497 myDeclval<t_ARGTYPES_06>(),
3498 myDeclval<t_ARGTYPES_07>(),
3499 myDeclval<t_ARGTYPES_08>(),
3500 myDeclval<t_ARGTYPES_09>(),
3501 myDeclval<t_ARGTYPES_10>(),
3502 myDeclval<t_ARGTYPES_11>(),
3503 myDeclval<t_ARGTYPES_12>())))),
3505 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3506 myDeclval<t_ARGTYPES_02>(),
3507 myDeclval<t_ARGTYPES_03>(),
3508 myDeclval<t_ARGTYPES_04>(),
3509 myDeclval<t_ARGTYPES_05>(),
3510 myDeclval<t_ARGTYPES_06>(),
3511 myDeclval<t_ARGTYPES_07>(),
3512 myDeclval<t_ARGTYPES_08>(),
3513 myDeclval<t_ARGTYPES_09>(),
3514 myDeclval<t_ARGTYPES_10>(),
3515 myDeclval<t_ARGTYPES_11>(),
3516 myDeclval<t_ARGTYPES_12>())))),
3517 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3518 (
int)InvokeResult_Index::e_OTHER)
3522 ! k_CANT_DEDUCE_TYPE,
3523 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3525 >::type UnqualTargetType;
3528 InvokeResult_AddCVRef<UnqualTargetType,
3529 static_cast<bool>(k_IS_CONST_TARGET)
3530 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3531 static_cast<bool>(k_IS_VOLATILE_TARGET)
3532 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3533 false>::type CVQualTargetType;
3537 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3539 CVQualTargetType>::type UnqualType;
3542 InvokeResult_AddCVRef<
3544 static_cast<bool>(k_IS_CONST_PTR)
3545 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3546 static_cast<bool>(k_IS_VOLATILE_PTR)
3547 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3548 static_cast<bool>(k_IS_LVALUE)
3549 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3556#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 13
3557template <
bool __Param__0,
class t_FN,
class t_ARGTYPES_01,
3558 class t_ARGTYPES_02,
3559 class t_ARGTYPES_03,
3560 class t_ARGTYPES_04,
3561 class t_ARGTYPES_05,
3562 class t_ARGTYPES_06,
3563 class t_ARGTYPES_07,
3564 class t_ARGTYPES_08,
3565 class t_ARGTYPES_09,
3566 class t_ARGTYPES_10,
3567 class t_ARGTYPES_11,
3568 class t_ARGTYPES_12,
3569 class t_ARGTYPES_13>
3570struct InvokeResult_FunctorDeduction<__Param__0, t_FN, t_ARGTYPES_01,
3583 > : InvokeResult_ImpUtils {
3590 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3591 myDeclval<t_ARGTYPES_02>(),
3592 myDeclval<t_ARGTYPES_03>(),
3593 myDeclval<t_ARGTYPES_04>(),
3594 myDeclval<t_ARGTYPES_05>(),
3595 myDeclval<t_ARGTYPES_06>(),
3596 myDeclval<t_ARGTYPES_07>(),
3597 myDeclval<t_ARGTYPES_08>(),
3598 myDeclval<t_ARGTYPES_09>(),
3599 myDeclval<t_ARGTYPES_10>(),
3600 myDeclval<t_ARGTYPES_11>(),
3601 myDeclval<t_ARGTYPES_12>(),
3602 myDeclval<t_ARGTYPES_13>())))),
3603 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
3605 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3606 myDeclval<t_ARGTYPES_02>(),
3607 myDeclval<t_ARGTYPES_03>(),
3608 myDeclval<t_ARGTYPES_04>(),
3609 myDeclval<t_ARGTYPES_05>(),
3610 myDeclval<t_ARGTYPES_06>(),
3611 myDeclval<t_ARGTYPES_07>(),
3612 myDeclval<t_ARGTYPES_08>(),
3613 myDeclval<t_ARGTYPES_09>(),
3614 myDeclval<t_ARGTYPES_10>(),
3615 myDeclval<t_ARGTYPES_11>(),
3616 myDeclval<t_ARGTYPES_12>(),
3617 myDeclval<t_ARGTYPES_13>()), 0)),
3618 k_IS_CONST_PTR = k_IS_POINTER &&
3620 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3621 myDeclval<t_ARGTYPES_02>(),
3622 myDeclval<t_ARGTYPES_03>(),
3623 myDeclval<t_ARGTYPES_04>(),
3624 myDeclval<t_ARGTYPES_05>(),
3625 myDeclval<t_ARGTYPES_06>(),
3626 myDeclval<t_ARGTYPES_07>(),
3627 myDeclval<t_ARGTYPES_08>(),
3628 myDeclval<t_ARGTYPES_09>(),
3629 myDeclval<t_ARGTYPES_10>(),
3630 myDeclval<t_ARGTYPES_11>(),
3631 myDeclval<t_ARGTYPES_12>(),
3632 myDeclval<t_ARGTYPES_13>()))),
3633 k_IS_VOLATILE_PTR = k_IS_POINTER &&
3635 myDeclval<t_ARGTYPES_01>(),
3636 myDeclval<t_ARGTYPES_02>(),
3637 myDeclval<t_ARGTYPES_03>(),
3638 myDeclval<t_ARGTYPES_04>(),
3639 myDeclval<t_ARGTYPES_05>(),
3640 myDeclval<t_ARGTYPES_06>(),
3641 myDeclval<t_ARGTYPES_07>(),
3642 myDeclval<t_ARGTYPES_08>(),
3643 myDeclval<t_ARGTYPES_09>(),
3644 myDeclval<t_ARGTYPES_10>(),
3645 myDeclval<t_ARGTYPES_11>(),
3646 myDeclval<t_ARGTYPES_12>(),
3647 myDeclval<t_ARGTYPES_13>()))),
3649 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3650 myDeclval<t_ARGTYPES_02>(),
3651 myDeclval<t_ARGTYPES_03>(),
3652 myDeclval<t_ARGTYPES_04>(),
3653 myDeclval<t_ARGTYPES_05>(),
3654 myDeclval<t_ARGTYPES_06>(),
3655 myDeclval<t_ARGTYPES_07>(),
3656 myDeclval<t_ARGTYPES_08>(),
3657 myDeclval<t_ARGTYPES_09>(),
3658 myDeclval<t_ARGTYPES_10>(),
3659 myDeclval<t_ARGTYPES_11>(),
3660 myDeclval<t_ARGTYPES_12>(),
3661 myDeclval<t_ARGTYPES_13>()))))),
3663 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3664 myDeclval<t_ARGTYPES_02>(),
3665 myDeclval<t_ARGTYPES_03>(),
3666 myDeclval<t_ARGTYPES_04>(),
3667 myDeclval<t_ARGTYPES_05>(),
3668 myDeclval<t_ARGTYPES_06>(),
3669 myDeclval<t_ARGTYPES_07>(),
3670 myDeclval<t_ARGTYPES_08>(),
3671 myDeclval<t_ARGTYPES_09>(),
3672 myDeclval<t_ARGTYPES_10>(),
3673 myDeclval<t_ARGTYPES_11>(),
3674 myDeclval<t_ARGTYPES_12>(),
3675 myDeclval<t_ARGTYPES_13>())))),
3677 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
3678 myDeclval<t_ARGTYPES_02>(),
3679 myDeclval<t_ARGTYPES_03>(),
3680 myDeclval<t_ARGTYPES_04>(),
3681 myDeclval<t_ARGTYPES_05>(),
3682 myDeclval<t_ARGTYPES_06>(),
3683 myDeclval<t_ARGTYPES_07>(),
3684 myDeclval<t_ARGTYPES_08>(),
3685 myDeclval<t_ARGTYPES_09>(),
3686 myDeclval<t_ARGTYPES_10>(),
3687 myDeclval<t_ARGTYPES_11>(),
3688 myDeclval<t_ARGTYPES_12>(),
3689 myDeclval<t_ARGTYPES_13>())))),
3690 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
3691 (
int)InvokeResult_Index::e_OTHER)
3695 ! k_CANT_DEDUCE_TYPE,
3696 typename InvokeResult_Type<k_TARGET_INDEX>::type,
3698 >::type UnqualTargetType;
3701 InvokeResult_AddCVRef<UnqualTargetType,
3702 static_cast<bool>(k_IS_CONST_TARGET)
3703 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3704 static_cast<bool>(k_IS_VOLATILE_TARGET)
3705 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3706 false>::type CVQualTargetType;
3710 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3712 CVQualTargetType>::type UnqualType;
3715 InvokeResult_AddCVRef<
3717 static_cast<bool>(k_IS_CONST_PTR)
3718 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3719 static_cast<bool>(k_IS_VOLATILE_PTR)
3720 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
3721 static_cast<bool>(k_IS_LVALUE)
3722 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
3730#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 0
3731template <
class t_FN>
3732struct InvokeResult_FunctorDeduction<true , t_FN> {
3738#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 1
3739template <
class t_FN,
class t_ARGTYPES_01>
3740struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01> {
3746#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 2
3747template <
class t_FN,
class t_ARGTYPES_01,
3748 class t_ARGTYPES_02>
3749struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3756#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 3
3757template <
class t_FN,
class t_ARGTYPES_01,
3758 class t_ARGTYPES_02,
3759 class t_ARGTYPES_03>
3760struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3768#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 4
3769template <
class t_FN,
class t_ARGTYPES_01,
3770 class t_ARGTYPES_02,
3771 class t_ARGTYPES_03,
3772 class t_ARGTYPES_04>
3773struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3782#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 5
3783template <
class t_FN,
class t_ARGTYPES_01,
3784 class t_ARGTYPES_02,
3785 class t_ARGTYPES_03,
3786 class t_ARGTYPES_04,
3787 class t_ARGTYPES_05>
3788struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3798#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 6
3799template <
class t_FN,
class t_ARGTYPES_01,
3800 class t_ARGTYPES_02,
3801 class t_ARGTYPES_03,
3802 class t_ARGTYPES_04,
3803 class t_ARGTYPES_05,
3804 class t_ARGTYPES_06>
3805struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3816#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 7
3817template <
class t_FN,
class t_ARGTYPES_01,
3818 class t_ARGTYPES_02,
3819 class t_ARGTYPES_03,
3820 class t_ARGTYPES_04,
3821 class t_ARGTYPES_05,
3822 class t_ARGTYPES_06,
3823 class t_ARGTYPES_07>
3824struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3836#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 8
3837template <
class t_FN,
class t_ARGTYPES_01,
3838 class t_ARGTYPES_02,
3839 class t_ARGTYPES_03,
3840 class t_ARGTYPES_04,
3841 class t_ARGTYPES_05,
3842 class t_ARGTYPES_06,
3843 class t_ARGTYPES_07,
3844 class t_ARGTYPES_08>
3845struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3858#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 9
3859template <
class t_FN,
class t_ARGTYPES_01,
3860 class t_ARGTYPES_02,
3861 class t_ARGTYPES_03,
3862 class t_ARGTYPES_04,
3863 class t_ARGTYPES_05,
3864 class t_ARGTYPES_06,
3865 class t_ARGTYPES_07,
3866 class t_ARGTYPES_08,
3867 class t_ARGTYPES_09>
3868struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3882#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 10
3883template <
class t_FN,
class t_ARGTYPES_01,
3884 class t_ARGTYPES_02,
3885 class t_ARGTYPES_03,
3886 class t_ARGTYPES_04,
3887 class t_ARGTYPES_05,
3888 class t_ARGTYPES_06,
3889 class t_ARGTYPES_07,
3890 class t_ARGTYPES_08,
3891 class t_ARGTYPES_09,
3892 class t_ARGTYPES_10>
3893struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3908#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 11
3909template <
class t_FN,
class t_ARGTYPES_01,
3910 class t_ARGTYPES_02,
3911 class t_ARGTYPES_03,
3912 class t_ARGTYPES_04,
3913 class t_ARGTYPES_05,
3914 class t_ARGTYPES_06,
3915 class t_ARGTYPES_07,
3916 class t_ARGTYPES_08,
3917 class t_ARGTYPES_09,
3918 class t_ARGTYPES_10,
3919 class t_ARGTYPES_11>
3920struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3936#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 12
3937template <
class t_FN,
class t_ARGTYPES_01,
3938 class t_ARGTYPES_02,
3939 class t_ARGTYPES_03,
3940 class t_ARGTYPES_04,
3941 class t_ARGTYPES_05,
3942 class t_ARGTYPES_06,
3943 class t_ARGTYPES_07,
3944 class t_ARGTYPES_08,
3945 class t_ARGTYPES_09,
3946 class t_ARGTYPES_10,
3947 class t_ARGTYPES_11,
3948 class t_ARGTYPES_12>
3949struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
3966#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_D >= 13
3967template <
class t_FN,
class t_ARGTYPES_01,
3968 class t_ARGTYPES_02,
3969 class t_ARGTYPES_03,
3970 class t_ARGTYPES_04,
3971 class t_ARGTYPES_05,
3972 class t_ARGTYPES_06,
3973 class t_ARGTYPES_07,
3974 class t_ARGTYPES_08,
3975 class t_ARGTYPES_09,
3976 class t_ARGTYPES_10,
3977 class t_ARGTYPES_11,
3978 class t_ARGTYPES_12,
3979 class t_ARGTYPES_13>
3980struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES_01,
4003#ifndef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
4004template <bool ,
class t_FN,
class... t_ARGTYPES>
4005struct InvokeResult_FunctorDeduction : InvokeResult_ImpUtils {
4012 uncv(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)))),
4013 k_IS_POINTER = (k_INDEX == InvokeResult_Index::e_POINTER),
4015 checkLvalue(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...), 0)),
4016 k_IS_CONST_PTR = k_IS_POINTER &&
4018 myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...))),
4019 k_IS_VOLATILE_PTR = k_IS_POINTER &&
4021 myDeclval<t_ARGTYPES>()...))),
4023 uncv(unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...))))),
4025 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)))),
4027 unpoint(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)))),
4028 k_CANT_DEDUCE_TYPE = (k_TARGET_INDEX ==
4029 (
int)InvokeResult_Index::e_OTHER)
4033 ! k_CANT_DEDUCE_TYPE,
4034 typename InvokeResult_Type<k_TARGET_INDEX>::type,
4036 >::type UnqualTargetType;
4039 InvokeResult_AddCVRef<UnqualTargetType,
4040 static_cast<bool>(k_IS_CONST_TARGET)
4041 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4042 static_cast<bool>(k_IS_VOLATILE_TARGET)
4043 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4044 false>::type CVQualTargetType;
4048 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4050 CVQualTargetType>::type UnqualType;
4053 InvokeResult_AddCVRef<
4055 static_cast<bool>(k_IS_CONST_PTR)
4056 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4057 static_cast<bool>(k_IS_VOLATILE_PTR)
4058 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE),
4059 static_cast<bool>(k_IS_LVALUE)
4060 && !
static_cast<bool>(k_CANT_DEDUCE_TYPE)>::type Qtype;
4066template <
class t_FN,
class... t_ARGTYPES>
4067struct InvokeResult_FunctorDeduction<true , t_FN, t_ARGTYPES...> {
4086template <
class t_MEMOF_CLASS,
4091struct InvokeResult_MemPtrArgQualifiers {
4114template <
class t_MEMOF_CLASS,
class t_ARG_TYPE>
4115struct InvokeResult_MemPtrArgQualifiers<t_MEMOF_CLASS, t_ARG_TYPE, false>
4116: InvokeResult_ImpUtils {
4118#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
4130 template <
class t_TP>
4131 static t_TP& tolvalue(t_TP&&);
4140 checkVolatile(tolvalue(*myDeclval<t_ARG_TYPE>())))};
4148 k_IS_CONST = k_IS_LVALUE &&
4151 *myDeclval<t_ARG_TYPE>()))
4156#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
4159#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT
4160#define BSLMF_INVOKERESULT_VARIADIC_LIMIT 13
4162#ifndef BSLMF_INVOKERESULT_VARIADIC_LIMIT_E
4163#define BSLMF_INVOKERESULT_VARIADIC_LIMIT_E BSLMF_INVOKERESULT_VARIADIC_LIMIT
4166template <
class t_VOID_TYPE,
4168#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4169 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
4172#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4173 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
4176#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4177 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
4180#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4181 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
4184#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4185 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
4188#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4189 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
4192#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4193 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
4196#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4197 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
4200#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4201 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
4204#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4205 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
4208#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4209 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
4212#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4213 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
4216#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4217 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
4219 ,
class = BSLS_COMPILERFEATURES_NILT>
4220struct InvokeResult_FunctorImp;
4223template <
class t_VOID_TYPE,
4225#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4226 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
4229#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4230 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
4233#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4234 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
4237#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4238 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
4241#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4242 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
4245#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4246 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
4249#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4250 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
4253#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4254 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
4257#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4258 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
4261#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4262 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
4265#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4266 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
4269#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4270 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
4273#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4274 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
4276 ,
class = BSLS_COMPILERFEATURES_NILT>
4277struct InvokeResult_FuncPtrImp;
4281#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4282 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
4285#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4286 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
4289#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4290 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
4293#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4294 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
4297#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4298 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
4301#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4302 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
4305#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4306 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
4309#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4310 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
4313#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4314 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
4317#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4318 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
4321#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4322 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
4325#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4326 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
4329#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4330 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
4332 ,
class = BSLS_COMPILERFEATURES_NILT>
4333struct InvokeResult_MemFuncPtrImp;
4337#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4338 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
4341#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4342 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
4345#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4346 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
4349#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4350 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
4353#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4354 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
4357#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4358 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
4361#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4362 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
4365#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4366 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
4369#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4370 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
4373#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4374 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
4377#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4378 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
4381#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4382 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
4385#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4386 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
4388 ,
class = BSLS_COMPILERFEATURES_NILT>
4389struct InvokeResult_MemObjPtrImp;
4393#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4394template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4396struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN
4397 > : InvokeResult_FunctorImp<void, t_FN> {
4401#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4402template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4403 class t_FN,
class t_ARGTYPES_01>
4404struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4406 > : InvokeResult_FunctorImp<void, t_FN,
4411#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
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>
4415struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4418 > : InvokeResult_FunctorImp<void, t_FN,
4424#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4425template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4426 class t_FN,
class t_ARGTYPES_01,
4427 class t_ARGTYPES_02,
4428 class t_ARGTYPES_03>
4429struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4433 > : InvokeResult_FunctorImp<void, t_FN,
4440#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4441template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4442 class t_FN,
class t_ARGTYPES_01,
4443 class t_ARGTYPES_02,
4444 class t_ARGTYPES_03,
4445 class t_ARGTYPES_04>
4446struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4451 > : InvokeResult_FunctorImp<void, t_FN,
4459#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4460template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4461 class t_FN,
class t_ARGTYPES_01,
4462 class t_ARGTYPES_02,
4463 class t_ARGTYPES_03,
4464 class t_ARGTYPES_04,
4465 class t_ARGTYPES_05>
4466struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4472 > : InvokeResult_FunctorImp<void, t_FN,
4481#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4482template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4483 class t_FN,
class t_ARGTYPES_01,
4484 class t_ARGTYPES_02,
4485 class t_ARGTYPES_03,
4486 class t_ARGTYPES_04,
4487 class t_ARGTYPES_05,
4488 class t_ARGTYPES_06>
4489struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4496 > : InvokeResult_FunctorImp<void, t_FN,
4506#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4507template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4508 class t_FN,
class t_ARGTYPES_01,
4509 class t_ARGTYPES_02,
4510 class t_ARGTYPES_03,
4511 class t_ARGTYPES_04,
4512 class t_ARGTYPES_05,
4513 class t_ARGTYPES_06,
4514 class t_ARGTYPES_07>
4515struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4523 > : InvokeResult_FunctorImp<void, t_FN,
4534#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4535template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4536 class t_FN,
class t_ARGTYPES_01,
4537 class t_ARGTYPES_02,
4538 class t_ARGTYPES_03,
4539 class t_ARGTYPES_04,
4540 class t_ARGTYPES_05,
4541 class t_ARGTYPES_06,
4542 class t_ARGTYPES_07,
4543 class t_ARGTYPES_08>
4544struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4553 > : InvokeResult_FunctorImp<void, t_FN,
4565#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4566template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4567 class t_FN,
class t_ARGTYPES_01,
4568 class t_ARGTYPES_02,
4569 class t_ARGTYPES_03,
4570 class t_ARGTYPES_04,
4571 class t_ARGTYPES_05,
4572 class t_ARGTYPES_06,
4573 class t_ARGTYPES_07,
4574 class t_ARGTYPES_08,
4575 class t_ARGTYPES_09>
4576struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4586 > : InvokeResult_FunctorImp<void, t_FN,
4599#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4600template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4601 class t_FN,
class t_ARGTYPES_01,
4602 class t_ARGTYPES_02,
4603 class t_ARGTYPES_03,
4604 class t_ARGTYPES_04,
4605 class t_ARGTYPES_05,
4606 class t_ARGTYPES_06,
4607 class t_ARGTYPES_07,
4608 class t_ARGTYPES_08,
4609 class t_ARGTYPES_09,
4610 class t_ARGTYPES_10>
4611struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4622 > : InvokeResult_FunctorImp<void, t_FN,
4636#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
4637template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4638 class t_FN,
class t_ARGTYPES_01,
4639 class t_ARGTYPES_02,
4640 class t_ARGTYPES_03,
4641 class t_ARGTYPES_04,
4642 class t_ARGTYPES_05,
4643 class t_ARGTYPES_06,
4644 class t_ARGTYPES_07,
4645 class t_ARGTYPES_08,
4646 class t_ARGTYPES_09,
4647 class t_ARGTYPES_10,
4648 class t_ARGTYPES_11>
4649struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4661 > : InvokeResult_FunctorImp<void, t_FN,
4676#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
4677template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4678 class t_FN,
class t_ARGTYPES_01,
4679 class t_ARGTYPES_02,
4680 class t_ARGTYPES_03,
4681 class t_ARGTYPES_04,
4682 class t_ARGTYPES_05,
4683 class t_ARGTYPES_06,
4684 class t_ARGTYPES_07,
4685 class t_ARGTYPES_08,
4686 class t_ARGTYPES_09,
4687 class t_ARGTYPES_10,
4688 class t_ARGTYPES_11,
4689 class t_ARGTYPES_12>
4690struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4703 > : InvokeResult_FunctorImp<void, t_FN,
4719#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
4720template <
bool t_IS_FUNCPTR,
bool t_IS_MEMFUNCPTR,
bool t_IS_MEMOBJPTR,
4721 class t_FN,
class t_ARGTYPES_01,
4722 class t_ARGTYPES_02,
4723 class t_ARGTYPES_03,
4724 class t_ARGTYPES_04,
4725 class t_ARGTYPES_05,
4726 class t_ARGTYPES_06,
4727 class t_ARGTYPES_07,
4728 class t_ARGTYPES_08,
4729 class t_ARGTYPES_09,
4730 class t_ARGTYPES_10,
4731 class t_ARGTYPES_11,
4732 class t_ARGTYPES_12,
4733 class t_ARGTYPES_13>
4734struct InvokeResult_Imp<t_IS_FUNCPTR, t_IS_MEMFUNCPTR, t_IS_MEMOBJPTR, t_FN,
4748 > : InvokeResult_FunctorImp<void, t_FN,
4766#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
4767template <
class t_FN>
4768struct InvokeResult_Imp<true ,
4772: InvokeResult_FuncPtrImp<void, t_FN> {
4776#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
4777template <
class t_FN,
class t_ARGTYPES_01>
4778struct InvokeResult_Imp<true ,
4783: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01> {
4787#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
4788template <
class t_FN,
class t_ARGTYPES_01,
4789 class t_ARGTYPES_02>
4790struct InvokeResult_Imp<true ,
4796: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4801#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
4802template <
class t_FN,
class t_ARGTYPES_01,
4803 class t_ARGTYPES_02,
4804 class t_ARGTYPES_03>
4805struct InvokeResult_Imp<true ,
4812: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4818#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
4819template <
class t_FN,
class t_ARGTYPES_01,
4820 class t_ARGTYPES_02,
4821 class t_ARGTYPES_03,
4822 class t_ARGTYPES_04>
4823struct InvokeResult_Imp<true ,
4831: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4838#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
4839template <
class t_FN,
class t_ARGTYPES_01,
4840 class t_ARGTYPES_02,
4841 class t_ARGTYPES_03,
4842 class t_ARGTYPES_04,
4843 class t_ARGTYPES_05>
4844struct InvokeResult_Imp<true ,
4853: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4861#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
4862template <
class t_FN,
class t_ARGTYPES_01,
4863 class t_ARGTYPES_02,
4864 class t_ARGTYPES_03,
4865 class t_ARGTYPES_04,
4866 class t_ARGTYPES_05,
4867 class t_ARGTYPES_06>
4868struct InvokeResult_Imp<true ,
4878: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4887#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
4888template <
class t_FN,
class t_ARGTYPES_01,
4889 class t_ARGTYPES_02,
4890 class t_ARGTYPES_03,
4891 class t_ARGTYPES_04,
4892 class t_ARGTYPES_05,
4893 class t_ARGTYPES_06,
4894 class t_ARGTYPES_07>
4895struct InvokeResult_Imp<true ,
4906: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4916#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
4917template <
class t_FN,
class t_ARGTYPES_01,
4918 class t_ARGTYPES_02,
4919 class t_ARGTYPES_03,
4920 class t_ARGTYPES_04,
4921 class t_ARGTYPES_05,
4922 class t_ARGTYPES_06,
4923 class t_ARGTYPES_07,
4924 class t_ARGTYPES_08>
4925struct InvokeResult_Imp<true ,
4937: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4948#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
4949template <
class t_FN,
class t_ARGTYPES_01,
4950 class t_ARGTYPES_02,
4951 class t_ARGTYPES_03,
4952 class t_ARGTYPES_04,
4953 class t_ARGTYPES_05,
4954 class t_ARGTYPES_06,
4955 class t_ARGTYPES_07,
4956 class t_ARGTYPES_08,
4957 class t_ARGTYPES_09>
4958struct InvokeResult_Imp<true ,
4971: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
4983#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
4984template <
class t_FN,
class t_ARGTYPES_01,
4985 class t_ARGTYPES_02,
4986 class t_ARGTYPES_03,
4987 class t_ARGTYPES_04,
4988 class t_ARGTYPES_05,
4989 class t_ARGTYPES_06,
4990 class t_ARGTYPES_07,
4991 class t_ARGTYPES_08,
4992 class t_ARGTYPES_09,
4993 class t_ARGTYPES_10>
4994struct InvokeResult_Imp<true ,
5008: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
5021#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
5022template <
class t_FN,
class t_ARGTYPES_01,
5023 class t_ARGTYPES_02,
5024 class t_ARGTYPES_03,
5025 class t_ARGTYPES_04,
5026 class t_ARGTYPES_05,
5027 class t_ARGTYPES_06,
5028 class t_ARGTYPES_07,
5029 class t_ARGTYPES_08,
5030 class t_ARGTYPES_09,
5031 class t_ARGTYPES_10,
5032 class t_ARGTYPES_11>
5033struct InvokeResult_Imp<true ,
5048: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
5062#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
5063template <
class t_FN,
class t_ARGTYPES_01,
5064 class t_ARGTYPES_02,
5065 class t_ARGTYPES_03,
5066 class t_ARGTYPES_04,
5067 class t_ARGTYPES_05,
5068 class t_ARGTYPES_06,
5069 class t_ARGTYPES_07,
5070 class t_ARGTYPES_08,
5071 class t_ARGTYPES_09,
5072 class t_ARGTYPES_10,
5073 class t_ARGTYPES_11,
5074 class t_ARGTYPES_12>
5075struct InvokeResult_Imp<true ,
5091: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
5106#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
5107template <
class t_FN,
class t_ARGTYPES_01,
5108 class t_ARGTYPES_02,
5109 class t_ARGTYPES_03,
5110 class t_ARGTYPES_04,
5111 class t_ARGTYPES_05,
5112 class t_ARGTYPES_06,
5113 class t_ARGTYPES_07,
5114 class t_ARGTYPES_08,
5115 class t_ARGTYPES_09,
5116 class t_ARGTYPES_10,
5117 class t_ARGTYPES_11,
5118 class t_ARGTYPES_12,
5119 class t_ARGTYPES_13>
5120struct InvokeResult_Imp<true ,
5137: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES_01,
5154#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
5155template <
class t_FN>
5156struct InvokeResult_Imp<false,
5160: InvokeResult_MemFuncPtrImp<t_FN> {
5164#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
5165template <
class t_FN,
class t_ARGTYPES_01>
5166struct InvokeResult_Imp<false,
5171: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01> {
5175#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
5176template <
class t_FN,
class t_ARGTYPES_01,
5177 class t_ARGTYPES_02>
5178struct InvokeResult_Imp<false,
5184: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5189#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
5190template <
class t_FN,
class t_ARGTYPES_01,
5191 class t_ARGTYPES_02,
5192 class t_ARGTYPES_03>
5193struct InvokeResult_Imp<false,
5200: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5206#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
5207template <
class t_FN,
class t_ARGTYPES_01,
5208 class t_ARGTYPES_02,
5209 class t_ARGTYPES_03,
5210 class t_ARGTYPES_04>
5211struct InvokeResult_Imp<false,
5219: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5226#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
5227template <
class t_FN,
class t_ARGTYPES_01,
5228 class t_ARGTYPES_02,
5229 class t_ARGTYPES_03,
5230 class t_ARGTYPES_04,
5231 class t_ARGTYPES_05>
5232struct InvokeResult_Imp<false,
5241: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5249#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
5250template <
class t_FN,
class t_ARGTYPES_01,
5251 class t_ARGTYPES_02,
5252 class t_ARGTYPES_03,
5253 class t_ARGTYPES_04,
5254 class t_ARGTYPES_05,
5255 class t_ARGTYPES_06>
5256struct InvokeResult_Imp<false,
5266: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5275#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
5276template <
class t_FN,
class t_ARGTYPES_01,
5277 class t_ARGTYPES_02,
5278 class t_ARGTYPES_03,
5279 class t_ARGTYPES_04,
5280 class t_ARGTYPES_05,
5281 class t_ARGTYPES_06,
5282 class t_ARGTYPES_07>
5283struct InvokeResult_Imp<false,
5294: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5304#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
5305template <
class t_FN,
class t_ARGTYPES_01,
5306 class t_ARGTYPES_02,
5307 class t_ARGTYPES_03,
5308 class t_ARGTYPES_04,
5309 class t_ARGTYPES_05,
5310 class t_ARGTYPES_06,
5311 class t_ARGTYPES_07,
5312 class t_ARGTYPES_08>
5313struct InvokeResult_Imp<false,
5325: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5336#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
5337template <
class t_FN,
class t_ARGTYPES_01,
5338 class t_ARGTYPES_02,
5339 class t_ARGTYPES_03,
5340 class t_ARGTYPES_04,
5341 class t_ARGTYPES_05,
5342 class t_ARGTYPES_06,
5343 class t_ARGTYPES_07,
5344 class t_ARGTYPES_08,
5345 class t_ARGTYPES_09>
5346struct InvokeResult_Imp<false,
5359: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5371#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
5372template <
class t_FN,
class t_ARGTYPES_01,
5373 class t_ARGTYPES_02,
5374 class t_ARGTYPES_03,
5375 class t_ARGTYPES_04,
5376 class t_ARGTYPES_05,
5377 class t_ARGTYPES_06,
5378 class t_ARGTYPES_07,
5379 class t_ARGTYPES_08,
5380 class t_ARGTYPES_09,
5381 class t_ARGTYPES_10>
5382struct InvokeResult_Imp<false,
5396: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5409#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
5410template <
class t_FN,
class t_ARGTYPES_01,
5411 class t_ARGTYPES_02,
5412 class t_ARGTYPES_03,
5413 class t_ARGTYPES_04,
5414 class t_ARGTYPES_05,
5415 class t_ARGTYPES_06,
5416 class t_ARGTYPES_07,
5417 class t_ARGTYPES_08,
5418 class t_ARGTYPES_09,
5419 class t_ARGTYPES_10,
5420 class t_ARGTYPES_11>
5421struct InvokeResult_Imp<false,
5436: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5450#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
5451template <
class t_FN,
class t_ARGTYPES_01,
5452 class t_ARGTYPES_02,
5453 class t_ARGTYPES_03,
5454 class t_ARGTYPES_04,
5455 class t_ARGTYPES_05,
5456 class t_ARGTYPES_06,
5457 class t_ARGTYPES_07,
5458 class t_ARGTYPES_08,
5459 class t_ARGTYPES_09,
5460 class t_ARGTYPES_10,
5461 class t_ARGTYPES_11,
5462 class t_ARGTYPES_12>
5463struct InvokeResult_Imp<false,
5479: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5494#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
5495template <
class t_FN,
class t_ARGTYPES_01,
5496 class t_ARGTYPES_02,
5497 class t_ARGTYPES_03,
5498 class t_ARGTYPES_04,
5499 class t_ARGTYPES_05,
5500 class t_ARGTYPES_06,
5501 class t_ARGTYPES_07,
5502 class t_ARGTYPES_08,
5503 class t_ARGTYPES_09,
5504 class t_ARGTYPES_10,
5505 class t_ARGTYPES_11,
5506 class t_ARGTYPES_12,
5507 class t_ARGTYPES_13>
5508struct InvokeResult_Imp<false,
5525: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
5542#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
5543template <
class t_FN>
5544struct InvokeResult_Imp<false,
5548: InvokeResult_MemObjPtrImp<t_FN> {
5552#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
5553template <
class t_FN,
class t_ARGTYPES_01>
5554struct InvokeResult_Imp<false,
5559: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01> {
5563#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
5564template <
class t_FN,
class t_ARGTYPES_01,
5565 class t_ARGTYPES_02>
5566struct InvokeResult_Imp<false,
5572: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5577#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
5578template <
class t_FN,
class t_ARGTYPES_01,
5579 class t_ARGTYPES_02,
5580 class t_ARGTYPES_03>
5581struct InvokeResult_Imp<false,
5588: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5594#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
5595template <
class t_FN,
class t_ARGTYPES_01,
5596 class t_ARGTYPES_02,
5597 class t_ARGTYPES_03,
5598 class t_ARGTYPES_04>
5599struct InvokeResult_Imp<false,
5607: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5614#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
5615template <
class t_FN,
class t_ARGTYPES_01,
5616 class t_ARGTYPES_02,
5617 class t_ARGTYPES_03,
5618 class t_ARGTYPES_04,
5619 class t_ARGTYPES_05>
5620struct InvokeResult_Imp<false,
5629: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5637#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
5638template <
class t_FN,
class t_ARGTYPES_01,
5639 class t_ARGTYPES_02,
5640 class t_ARGTYPES_03,
5641 class t_ARGTYPES_04,
5642 class t_ARGTYPES_05,
5643 class t_ARGTYPES_06>
5644struct InvokeResult_Imp<false,
5654: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5663#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
5664template <
class t_FN,
class t_ARGTYPES_01,
5665 class t_ARGTYPES_02,
5666 class t_ARGTYPES_03,
5667 class t_ARGTYPES_04,
5668 class t_ARGTYPES_05,
5669 class t_ARGTYPES_06,
5670 class t_ARGTYPES_07>
5671struct InvokeResult_Imp<false,
5682: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5692#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
5693template <
class t_FN,
class t_ARGTYPES_01,
5694 class t_ARGTYPES_02,
5695 class t_ARGTYPES_03,
5696 class t_ARGTYPES_04,
5697 class t_ARGTYPES_05,
5698 class t_ARGTYPES_06,
5699 class t_ARGTYPES_07,
5700 class t_ARGTYPES_08>
5701struct InvokeResult_Imp<false,
5713: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5724#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
5725template <
class t_FN,
class t_ARGTYPES_01,
5726 class t_ARGTYPES_02,
5727 class t_ARGTYPES_03,
5728 class t_ARGTYPES_04,
5729 class t_ARGTYPES_05,
5730 class t_ARGTYPES_06,
5731 class t_ARGTYPES_07,
5732 class t_ARGTYPES_08,
5733 class t_ARGTYPES_09>
5734struct InvokeResult_Imp<false,
5747: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5759#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
5760template <
class t_FN,
class t_ARGTYPES_01,
5761 class t_ARGTYPES_02,
5762 class t_ARGTYPES_03,
5763 class t_ARGTYPES_04,
5764 class t_ARGTYPES_05,
5765 class t_ARGTYPES_06,
5766 class t_ARGTYPES_07,
5767 class t_ARGTYPES_08,
5768 class t_ARGTYPES_09,
5769 class t_ARGTYPES_10>
5770struct InvokeResult_Imp<false,
5784: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5797#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
5798template <
class t_FN,
class t_ARGTYPES_01,
5799 class t_ARGTYPES_02,
5800 class t_ARGTYPES_03,
5801 class t_ARGTYPES_04,
5802 class t_ARGTYPES_05,
5803 class t_ARGTYPES_06,
5804 class t_ARGTYPES_07,
5805 class t_ARGTYPES_08,
5806 class t_ARGTYPES_09,
5807 class t_ARGTYPES_10,
5808 class t_ARGTYPES_11>
5809struct InvokeResult_Imp<false,
5824: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5838#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
5839template <
class t_FN,
class t_ARGTYPES_01,
5840 class t_ARGTYPES_02,
5841 class t_ARGTYPES_03,
5842 class t_ARGTYPES_04,
5843 class t_ARGTYPES_05,
5844 class t_ARGTYPES_06,
5845 class t_ARGTYPES_07,
5846 class t_ARGTYPES_08,
5847 class t_ARGTYPES_09,
5848 class t_ARGTYPES_10,
5849 class t_ARGTYPES_11,
5850 class t_ARGTYPES_12>
5851struct InvokeResult_Imp<false,
5867: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5882#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
5883template <
class t_FN,
class t_ARGTYPES_01,
5884 class t_ARGTYPES_02,
5885 class t_ARGTYPES_03,
5886 class t_ARGTYPES_04,
5887 class t_ARGTYPES_05,
5888 class t_ARGTYPES_06,
5889 class t_ARGTYPES_07,
5890 class t_ARGTYPES_08,
5891 class t_ARGTYPES_09,
5892 class t_ARGTYPES_10,
5893 class t_ARGTYPES_11,
5894 class t_ARGTYPES_12,
5895 class t_ARGTYPES_13>
5896struct InvokeResult_Imp<false,
5913: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
5931#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
5932#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
5933template <
class t_VOID_TYPE,
class t_FN>
5934struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN> {
5938#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
5939template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01>
5940struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01> {
5944#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
5945template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5946 class t_ARGTYPES_02>
5947struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
5952#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
5953template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5954 class t_ARGTYPES_02,
5955 class t_ARGTYPES_03>
5956struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
5962#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
5963template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5964 class t_ARGTYPES_02,
5965 class t_ARGTYPES_03,
5966 class t_ARGTYPES_04>
5967struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
5974#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
5975template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5976 class t_ARGTYPES_02,
5977 class t_ARGTYPES_03,
5978 class t_ARGTYPES_04,
5979 class t_ARGTYPES_05>
5980struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
5988#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
5989template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
5990 class t_ARGTYPES_02,
5991 class t_ARGTYPES_03,
5992 class t_ARGTYPES_04,
5993 class t_ARGTYPES_05,
5994 class t_ARGTYPES_06>
5995struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6004#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
6005template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6006 class t_ARGTYPES_02,
6007 class t_ARGTYPES_03,
6008 class t_ARGTYPES_04,
6009 class t_ARGTYPES_05,
6010 class t_ARGTYPES_06,
6011 class t_ARGTYPES_07>
6012struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6022#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
6023template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6024 class t_ARGTYPES_02,
6025 class t_ARGTYPES_03,
6026 class t_ARGTYPES_04,
6027 class t_ARGTYPES_05,
6028 class t_ARGTYPES_06,
6029 class t_ARGTYPES_07,
6030 class t_ARGTYPES_08>
6031struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6042#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
6043template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6044 class t_ARGTYPES_02,
6045 class t_ARGTYPES_03,
6046 class t_ARGTYPES_04,
6047 class t_ARGTYPES_05,
6048 class t_ARGTYPES_06,
6049 class t_ARGTYPES_07,
6050 class t_ARGTYPES_08,
6051 class t_ARGTYPES_09>
6052struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6064#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
6065template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6066 class t_ARGTYPES_02,
6067 class t_ARGTYPES_03,
6068 class t_ARGTYPES_04,
6069 class t_ARGTYPES_05,
6070 class t_ARGTYPES_06,
6071 class t_ARGTYPES_07,
6072 class t_ARGTYPES_08,
6073 class t_ARGTYPES_09,
6074 class t_ARGTYPES_10>
6075struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6088#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
6089template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6090 class t_ARGTYPES_02,
6091 class t_ARGTYPES_03,
6092 class t_ARGTYPES_04,
6093 class t_ARGTYPES_05,
6094 class t_ARGTYPES_06,
6095 class t_ARGTYPES_07,
6096 class t_ARGTYPES_08,
6097 class t_ARGTYPES_09,
6098 class t_ARGTYPES_10,
6099 class t_ARGTYPES_11>
6100struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6114#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
6115template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6116 class t_ARGTYPES_02,
6117 class t_ARGTYPES_03,
6118 class t_ARGTYPES_04,
6119 class t_ARGTYPES_05,
6120 class t_ARGTYPES_06,
6121 class t_ARGTYPES_07,
6122 class t_ARGTYPES_08,
6123 class t_ARGTYPES_09,
6124 class t_ARGTYPES_10,
6125 class t_ARGTYPES_11,
6126 class t_ARGTYPES_12>
6127struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6142#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
6143template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6144 class t_ARGTYPES_02,
6145 class t_ARGTYPES_03,
6146 class t_ARGTYPES_04,
6147 class t_ARGTYPES_05,
6148 class t_ARGTYPES_06,
6149 class t_ARGTYPES_07,
6150 class t_ARGTYPES_08,
6151 class t_ARGTYPES_09,
6152 class t_ARGTYPES_10,
6153 class t_ARGTYPES_11,
6154 class t_ARGTYPES_12,
6155 class t_ARGTYPES_13>
6156struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6173#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
6174template <
class t_FN>
6175struct InvokeResult_FunctorImp<
6176 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6178 t_FN> : InvokeResult_ImpUtils {
6181 typedef decltype(myDeclval<t_FN>()()) type;
6185#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
6186template <
class t_FN,
class t_ARGTYPES_01>
6187struct InvokeResult_FunctorImp<
6188 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6189 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
6191 t_ARGTYPES_01> : InvokeResult_ImpUtils {
6194 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())) type;
6198#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
6199template <
class t_FN,
class t_ARGTYPES_01,
6200 class t_ARGTYPES_02>
6201struct InvokeResult_FunctorImp<
6202 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6203 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6204 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
6207 t_ARGTYPES_02> : InvokeResult_ImpUtils {
6210 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6211 myDeclval<t_ARGTYPES_02>())) type;
6215#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
6216template <
class t_FN,
class t_ARGTYPES_01,
6217 class t_ARGTYPES_02,
6218 class t_ARGTYPES_03>
6219struct InvokeResult_FunctorImp<
6220 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6221 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6222 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6223 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
6227 t_ARGTYPES_03> : InvokeResult_ImpUtils {
6230 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6231 myDeclval<t_ARGTYPES_02>(),
6232 myDeclval<t_ARGTYPES_03>())) type;
6236#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
6237template <
class t_FN,
class t_ARGTYPES_01,
6238 class t_ARGTYPES_02,
6239 class t_ARGTYPES_03,
6240 class t_ARGTYPES_04>
6241struct InvokeResult_FunctorImp<
6242 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6243 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6244 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6245 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6246 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
6251 t_ARGTYPES_04> : InvokeResult_ImpUtils {
6254 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6255 myDeclval<t_ARGTYPES_02>(),
6256 myDeclval<t_ARGTYPES_03>(),
6257 myDeclval<t_ARGTYPES_04>())) type;
6261#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
6262template <
class t_FN,
class t_ARGTYPES_01,
6263 class t_ARGTYPES_02,
6264 class t_ARGTYPES_03,
6265 class t_ARGTYPES_04,
6266 class t_ARGTYPES_05>
6267struct InvokeResult_FunctorImp<
6268 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6269 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6270 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6271 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6272 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6273 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
6279 t_ARGTYPES_05> : InvokeResult_ImpUtils {
6282 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6283 myDeclval<t_ARGTYPES_02>(),
6284 myDeclval<t_ARGTYPES_03>(),
6285 myDeclval<t_ARGTYPES_04>(),
6286 myDeclval<t_ARGTYPES_05>())) type;
6290#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
6291template <
class t_FN,
class t_ARGTYPES_01,
6292 class t_ARGTYPES_02,
6293 class t_ARGTYPES_03,
6294 class t_ARGTYPES_04,
6295 class t_ARGTYPES_05,
6296 class t_ARGTYPES_06>
6297struct InvokeResult_FunctorImp<
6298 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6299 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6300 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6301 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6302 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6303 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6304 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
6311 t_ARGTYPES_06> : InvokeResult_ImpUtils {
6314 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6315 myDeclval<t_ARGTYPES_02>(),
6316 myDeclval<t_ARGTYPES_03>(),
6317 myDeclval<t_ARGTYPES_04>(),
6318 myDeclval<t_ARGTYPES_05>(),
6319 myDeclval<t_ARGTYPES_06>())) type;
6323#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
6324template <
class t_FN,
class t_ARGTYPES_01,
6325 class t_ARGTYPES_02,
6326 class t_ARGTYPES_03,
6327 class t_ARGTYPES_04,
6328 class t_ARGTYPES_05,
6329 class t_ARGTYPES_06,
6330 class t_ARGTYPES_07>
6331struct InvokeResult_FunctorImp<
6332 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6333 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6334 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6335 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6336 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6337 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6338 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6339 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
6347 t_ARGTYPES_07> : InvokeResult_ImpUtils {
6350 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6351 myDeclval<t_ARGTYPES_02>(),
6352 myDeclval<t_ARGTYPES_03>(),
6353 myDeclval<t_ARGTYPES_04>(),
6354 myDeclval<t_ARGTYPES_05>(),
6355 myDeclval<t_ARGTYPES_06>(),
6356 myDeclval<t_ARGTYPES_07>())) type;
6360#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
6361template <
class t_FN,
class t_ARGTYPES_01,
6362 class t_ARGTYPES_02,
6363 class t_ARGTYPES_03,
6364 class t_ARGTYPES_04,
6365 class t_ARGTYPES_05,
6366 class t_ARGTYPES_06,
6367 class t_ARGTYPES_07,
6368 class t_ARGTYPES_08>
6369struct InvokeResult_FunctorImp<
6370 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6371 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6372 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6373 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6374 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6375 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6376 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6377 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6378 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
6387 t_ARGTYPES_08> : InvokeResult_ImpUtils {
6390 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6391 myDeclval<t_ARGTYPES_02>(),
6392 myDeclval<t_ARGTYPES_03>(),
6393 myDeclval<t_ARGTYPES_04>(),
6394 myDeclval<t_ARGTYPES_05>(),
6395 myDeclval<t_ARGTYPES_06>(),
6396 myDeclval<t_ARGTYPES_07>(),
6397 myDeclval<t_ARGTYPES_08>())) type;
6401#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
6402template <
class t_FN,
class t_ARGTYPES_01,
6403 class t_ARGTYPES_02,
6404 class t_ARGTYPES_03,
6405 class t_ARGTYPES_04,
6406 class t_ARGTYPES_05,
6407 class t_ARGTYPES_06,
6408 class t_ARGTYPES_07,
6409 class t_ARGTYPES_08,
6410 class t_ARGTYPES_09>
6411struct InvokeResult_FunctorImp<
6412 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6413 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6414 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6415 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6416 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6417 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6418 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6419 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6420 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6421 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
6431 t_ARGTYPES_09> : InvokeResult_ImpUtils {
6434 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6435 myDeclval<t_ARGTYPES_02>(),
6436 myDeclval<t_ARGTYPES_03>(),
6437 myDeclval<t_ARGTYPES_04>(),
6438 myDeclval<t_ARGTYPES_05>(),
6439 myDeclval<t_ARGTYPES_06>(),
6440 myDeclval<t_ARGTYPES_07>(),
6441 myDeclval<t_ARGTYPES_08>(),
6442 myDeclval<t_ARGTYPES_09>())) type;
6446#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
6447template <
class t_FN,
class t_ARGTYPES_01,
6448 class t_ARGTYPES_02,
6449 class t_ARGTYPES_03,
6450 class t_ARGTYPES_04,
6451 class t_ARGTYPES_05,
6452 class t_ARGTYPES_06,
6453 class t_ARGTYPES_07,
6454 class t_ARGTYPES_08,
6455 class t_ARGTYPES_09,
6456 class t_ARGTYPES_10>
6457struct InvokeResult_FunctorImp<
6458 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6459 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6460 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6461 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6462 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6463 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6464 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6465 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6466 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6467 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
6468 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
6479 t_ARGTYPES_10> : InvokeResult_ImpUtils {
6482 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6483 myDeclval<t_ARGTYPES_02>(),
6484 myDeclval<t_ARGTYPES_03>(),
6485 myDeclval<t_ARGTYPES_04>(),
6486 myDeclval<t_ARGTYPES_05>(),
6487 myDeclval<t_ARGTYPES_06>(),
6488 myDeclval<t_ARGTYPES_07>(),
6489 myDeclval<t_ARGTYPES_08>(),
6490 myDeclval<t_ARGTYPES_09>(),
6491 myDeclval<t_ARGTYPES_10>())) type;
6495#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
6496template <
class t_FN,
class t_ARGTYPES_01,
6497 class t_ARGTYPES_02,
6498 class t_ARGTYPES_03,
6499 class t_ARGTYPES_04,
6500 class t_ARGTYPES_05,
6501 class t_ARGTYPES_06,
6502 class t_ARGTYPES_07,
6503 class t_ARGTYPES_08,
6504 class t_ARGTYPES_09,
6505 class t_ARGTYPES_10,
6506 class t_ARGTYPES_11>
6507struct InvokeResult_FunctorImp<
6508 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6509 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6510 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6511 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6512 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6513 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6514 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6515 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6516 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6517 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
6518 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
6519 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
6531 t_ARGTYPES_11> : InvokeResult_ImpUtils {
6534 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6535 myDeclval<t_ARGTYPES_02>(),
6536 myDeclval<t_ARGTYPES_03>(),
6537 myDeclval<t_ARGTYPES_04>(),
6538 myDeclval<t_ARGTYPES_05>(),
6539 myDeclval<t_ARGTYPES_06>(),
6540 myDeclval<t_ARGTYPES_07>(),
6541 myDeclval<t_ARGTYPES_08>(),
6542 myDeclval<t_ARGTYPES_09>(),
6543 myDeclval<t_ARGTYPES_10>(),
6544 myDeclval<t_ARGTYPES_11>())) type;
6548#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
6549template <
class t_FN,
class t_ARGTYPES_01,
6550 class t_ARGTYPES_02,
6551 class t_ARGTYPES_03,
6552 class t_ARGTYPES_04,
6553 class t_ARGTYPES_05,
6554 class t_ARGTYPES_06,
6555 class t_ARGTYPES_07,
6556 class t_ARGTYPES_08,
6557 class t_ARGTYPES_09,
6558 class t_ARGTYPES_10,
6559 class t_ARGTYPES_11,
6560 class t_ARGTYPES_12>
6561struct InvokeResult_FunctorImp<
6562 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6563 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6564 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6565 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6566 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6567 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6568 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6569 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6570 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6571 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
6572 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
6573 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
6574 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
6587 t_ARGTYPES_12> : InvokeResult_ImpUtils {
6590 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6591 myDeclval<t_ARGTYPES_02>(),
6592 myDeclval<t_ARGTYPES_03>(),
6593 myDeclval<t_ARGTYPES_04>(),
6594 myDeclval<t_ARGTYPES_05>(),
6595 myDeclval<t_ARGTYPES_06>(),
6596 myDeclval<t_ARGTYPES_07>(),
6597 myDeclval<t_ARGTYPES_08>(),
6598 myDeclval<t_ARGTYPES_09>(),
6599 myDeclval<t_ARGTYPES_10>(),
6600 myDeclval<t_ARGTYPES_11>(),
6601 myDeclval<t_ARGTYPES_12>())) type;
6605#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
6606template <
class t_FN,
class t_ARGTYPES_01,
6607 class t_ARGTYPES_02,
6608 class t_ARGTYPES_03,
6609 class t_ARGTYPES_04,
6610 class t_ARGTYPES_05,
6611 class t_ARGTYPES_06,
6612 class t_ARGTYPES_07,
6613 class t_ARGTYPES_08,
6614 class t_ARGTYPES_09,
6615 class t_ARGTYPES_10,
6616 class t_ARGTYPES_11,
6617 class t_ARGTYPES_12,
6618 class t_ARGTYPES_13>
6619struct InvokeResult_FunctorImp<
6620 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
6621 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
6622 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
6623 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
6624 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
6625 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
6626 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
6627 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
6628 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
6629 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
6630 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
6631 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
6632 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
6633 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
6647 t_ARGTYPES_13> : InvokeResult_ImpUtils {
6650 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6651 myDeclval<t_ARGTYPES_02>(),
6652 myDeclval<t_ARGTYPES_03>(),
6653 myDeclval<t_ARGTYPES_04>(),
6654 myDeclval<t_ARGTYPES_05>(),
6655 myDeclval<t_ARGTYPES_06>(),
6656 myDeclval<t_ARGTYPES_07>(),
6657 myDeclval<t_ARGTYPES_08>(),
6658 myDeclval<t_ARGTYPES_09>(),
6659 myDeclval<t_ARGTYPES_10>(),
6660 myDeclval<t_ARGTYPES_11>(),
6661 myDeclval<t_ARGTYPES_12>(),
6662 myDeclval<t_ARGTYPES_13>())) type;
6667#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
6668template <
class t_VOID_TYPE,
class t_FN>
6669struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN> : InvokeResult_ImpUtils {
6673 myDeclval<t_FN>()(),
6674 InvokeResult_VoidChecker()))
6677 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6682#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
6683template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01>
6684struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01
6685 > : InvokeResult_ImpUtils {
6689 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>()),
6690 InvokeResult_VoidChecker()))
6693 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6695 t_ARGTYPES_01>::type type;
6699#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
6700template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6701 class t_ARGTYPES_02>
6702struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6704 > : InvokeResult_ImpUtils {
6708 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6709 myDeclval<t_ARGTYPES_02>()),
6710 InvokeResult_VoidChecker()))
6713 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6716 t_ARGTYPES_02>::type type;
6720#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
6721template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6722 class t_ARGTYPES_02,
6723 class t_ARGTYPES_03>
6724struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6727 > : InvokeResult_ImpUtils {
6731 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6732 myDeclval<t_ARGTYPES_02>(),
6733 myDeclval<t_ARGTYPES_03>()),
6734 InvokeResult_VoidChecker()))
6737 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6741 t_ARGTYPES_03>::type type;
6745#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
6746template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6747 class t_ARGTYPES_02,
6748 class t_ARGTYPES_03,
6749 class t_ARGTYPES_04>
6750struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6754 > : InvokeResult_ImpUtils {
6758 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6759 myDeclval<t_ARGTYPES_02>(),
6760 myDeclval<t_ARGTYPES_03>(),
6761 myDeclval<t_ARGTYPES_04>()),
6762 InvokeResult_VoidChecker()))
6765 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6770 t_ARGTYPES_04>::type type;
6774#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
6775template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6776 class t_ARGTYPES_02,
6777 class t_ARGTYPES_03,
6778 class t_ARGTYPES_04,
6779 class t_ARGTYPES_05>
6780struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6785 > : InvokeResult_ImpUtils {
6789 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6790 myDeclval<t_ARGTYPES_02>(),
6791 myDeclval<t_ARGTYPES_03>(),
6792 myDeclval<t_ARGTYPES_04>(),
6793 myDeclval<t_ARGTYPES_05>()),
6794 InvokeResult_VoidChecker()))
6797 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6803 t_ARGTYPES_05>::type type;
6807#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
6808template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6809 class t_ARGTYPES_02,
6810 class t_ARGTYPES_03,
6811 class t_ARGTYPES_04,
6812 class t_ARGTYPES_05,
6813 class t_ARGTYPES_06>
6814struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6820 > : InvokeResult_ImpUtils {
6824 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6825 myDeclval<t_ARGTYPES_02>(),
6826 myDeclval<t_ARGTYPES_03>(),
6827 myDeclval<t_ARGTYPES_04>(),
6828 myDeclval<t_ARGTYPES_05>(),
6829 myDeclval<t_ARGTYPES_06>()),
6830 InvokeResult_VoidChecker()))
6833 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6840 t_ARGTYPES_06>::type type;
6844#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
6845template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6846 class t_ARGTYPES_02,
6847 class t_ARGTYPES_03,
6848 class t_ARGTYPES_04,
6849 class t_ARGTYPES_05,
6850 class t_ARGTYPES_06,
6851 class t_ARGTYPES_07>
6852struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6859 > : InvokeResult_ImpUtils {
6863 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6864 myDeclval<t_ARGTYPES_02>(),
6865 myDeclval<t_ARGTYPES_03>(),
6866 myDeclval<t_ARGTYPES_04>(),
6867 myDeclval<t_ARGTYPES_05>(),
6868 myDeclval<t_ARGTYPES_06>(),
6869 myDeclval<t_ARGTYPES_07>()),
6870 InvokeResult_VoidChecker()))
6873 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6881 t_ARGTYPES_07>::type type;
6885#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
6886template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6887 class t_ARGTYPES_02,
6888 class t_ARGTYPES_03,
6889 class t_ARGTYPES_04,
6890 class t_ARGTYPES_05,
6891 class t_ARGTYPES_06,
6892 class t_ARGTYPES_07,
6893 class t_ARGTYPES_08>
6894struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6902 > : InvokeResult_ImpUtils {
6906 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6907 myDeclval<t_ARGTYPES_02>(),
6908 myDeclval<t_ARGTYPES_03>(),
6909 myDeclval<t_ARGTYPES_04>(),
6910 myDeclval<t_ARGTYPES_05>(),
6911 myDeclval<t_ARGTYPES_06>(),
6912 myDeclval<t_ARGTYPES_07>(),
6913 myDeclval<t_ARGTYPES_08>()),
6914 InvokeResult_VoidChecker()))
6917 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6926 t_ARGTYPES_08>::type type;
6930#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
6931template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6932 class t_ARGTYPES_02,
6933 class t_ARGTYPES_03,
6934 class t_ARGTYPES_04,
6935 class t_ARGTYPES_05,
6936 class t_ARGTYPES_06,
6937 class t_ARGTYPES_07,
6938 class t_ARGTYPES_08,
6939 class t_ARGTYPES_09>
6940struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
6949 > : InvokeResult_ImpUtils {
6953 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
6954 myDeclval<t_ARGTYPES_02>(),
6955 myDeclval<t_ARGTYPES_03>(),
6956 myDeclval<t_ARGTYPES_04>(),
6957 myDeclval<t_ARGTYPES_05>(),
6958 myDeclval<t_ARGTYPES_06>(),
6959 myDeclval<t_ARGTYPES_07>(),
6960 myDeclval<t_ARGTYPES_08>(),
6961 myDeclval<t_ARGTYPES_09>()),
6962 InvokeResult_VoidChecker()))
6965 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
6975 t_ARGTYPES_09>::type type;
6979#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
6980template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
6981 class t_ARGTYPES_02,
6982 class t_ARGTYPES_03,
6983 class t_ARGTYPES_04,
6984 class t_ARGTYPES_05,
6985 class t_ARGTYPES_06,
6986 class t_ARGTYPES_07,
6987 class t_ARGTYPES_08,
6988 class t_ARGTYPES_09,
6989 class t_ARGTYPES_10>
6990struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7000 > : InvokeResult_ImpUtils {
7004 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7005 myDeclval<t_ARGTYPES_02>(),
7006 myDeclval<t_ARGTYPES_03>(),
7007 myDeclval<t_ARGTYPES_04>(),
7008 myDeclval<t_ARGTYPES_05>(),
7009 myDeclval<t_ARGTYPES_06>(),
7010 myDeclval<t_ARGTYPES_07>(),
7011 myDeclval<t_ARGTYPES_08>(),
7012 myDeclval<t_ARGTYPES_09>(),
7013 myDeclval<t_ARGTYPES_10>()),
7014 InvokeResult_VoidChecker()))
7017 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
7028 t_ARGTYPES_10>::type type;
7032#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
7033template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7034 class t_ARGTYPES_02,
7035 class t_ARGTYPES_03,
7036 class t_ARGTYPES_04,
7037 class t_ARGTYPES_05,
7038 class t_ARGTYPES_06,
7039 class t_ARGTYPES_07,
7040 class t_ARGTYPES_08,
7041 class t_ARGTYPES_09,
7042 class t_ARGTYPES_10,
7043 class t_ARGTYPES_11>
7044struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7055 > : InvokeResult_ImpUtils {
7059 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7060 myDeclval<t_ARGTYPES_02>(),
7061 myDeclval<t_ARGTYPES_03>(),
7062 myDeclval<t_ARGTYPES_04>(),
7063 myDeclval<t_ARGTYPES_05>(),
7064 myDeclval<t_ARGTYPES_06>(),
7065 myDeclval<t_ARGTYPES_07>(),
7066 myDeclval<t_ARGTYPES_08>(),
7067 myDeclval<t_ARGTYPES_09>(),
7068 myDeclval<t_ARGTYPES_10>(),
7069 myDeclval<t_ARGTYPES_11>()),
7070 InvokeResult_VoidChecker()))
7073 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
7085 t_ARGTYPES_11>::type type;
7089#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
7090template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7091 class t_ARGTYPES_02,
7092 class t_ARGTYPES_03,
7093 class t_ARGTYPES_04,
7094 class t_ARGTYPES_05,
7095 class t_ARGTYPES_06,
7096 class t_ARGTYPES_07,
7097 class t_ARGTYPES_08,
7098 class t_ARGTYPES_09,
7099 class t_ARGTYPES_10,
7100 class t_ARGTYPES_11,
7101 class t_ARGTYPES_12>
7102struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7114 > : InvokeResult_ImpUtils {
7118 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7119 myDeclval<t_ARGTYPES_02>(),
7120 myDeclval<t_ARGTYPES_03>(),
7121 myDeclval<t_ARGTYPES_04>(),
7122 myDeclval<t_ARGTYPES_05>(),
7123 myDeclval<t_ARGTYPES_06>(),
7124 myDeclval<t_ARGTYPES_07>(),
7125 myDeclval<t_ARGTYPES_08>(),
7126 myDeclval<t_ARGTYPES_09>(),
7127 myDeclval<t_ARGTYPES_10>(),
7128 myDeclval<t_ARGTYPES_11>(),
7129 myDeclval<t_ARGTYPES_12>()),
7130 InvokeResult_VoidChecker()))
7133 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
7146 t_ARGTYPES_12>::type type;
7150#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
7151template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7152 class t_ARGTYPES_02,
7153 class t_ARGTYPES_03,
7154 class t_ARGTYPES_04,
7155 class t_ARGTYPES_05,
7156 class t_ARGTYPES_06,
7157 class t_ARGTYPES_07,
7158 class t_ARGTYPES_08,
7159 class t_ARGTYPES_09,
7160 class t_ARGTYPES_10,
7161 class t_ARGTYPES_11,
7162 class t_ARGTYPES_12,
7163 class t_ARGTYPES_13>
7164struct InvokeResult_FunctorImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7177 > : InvokeResult_ImpUtils {
7181 myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7182 myDeclval<t_ARGTYPES_02>(),
7183 myDeclval<t_ARGTYPES_03>(),
7184 myDeclval<t_ARGTYPES_04>(),
7185 myDeclval<t_ARGTYPES_05>(),
7186 myDeclval<t_ARGTYPES_06>(),
7187 myDeclval<t_ARGTYPES_07>(),
7188 myDeclval<t_ARGTYPES_08>(),
7189 myDeclval<t_ARGTYPES_09>(),
7190 myDeclval<t_ARGTYPES_10>(),
7191 myDeclval<t_ARGTYPES_11>(),
7192 myDeclval<t_ARGTYPES_12>(),
7193 myDeclval<t_ARGTYPES_13>()),
7194 InvokeResult_VoidChecker()))
7197 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
7211 t_ARGTYPES_13>::type type;
7218#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
7219#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
7220template <
class t_VOID_TYPE,
class t_FN>
7221struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN> {
7225#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
7226template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01>
7227struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01> {
7231#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
7232template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7233 class t_ARGTYPES_02>
7234struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7239#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
7240template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7241 class t_ARGTYPES_02,
7242 class t_ARGTYPES_03>
7243struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7249#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
7250template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7251 class t_ARGTYPES_02,
7252 class t_ARGTYPES_03,
7253 class t_ARGTYPES_04>
7254struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7261#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
7262template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7263 class t_ARGTYPES_02,
7264 class t_ARGTYPES_03,
7265 class t_ARGTYPES_04,
7266 class t_ARGTYPES_05>
7267struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7275#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
7276template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7277 class t_ARGTYPES_02,
7278 class t_ARGTYPES_03,
7279 class t_ARGTYPES_04,
7280 class t_ARGTYPES_05,
7281 class t_ARGTYPES_06>
7282struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7291#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
7292template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7293 class t_ARGTYPES_02,
7294 class t_ARGTYPES_03,
7295 class t_ARGTYPES_04,
7296 class t_ARGTYPES_05,
7297 class t_ARGTYPES_06,
7298 class t_ARGTYPES_07>
7299struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7309#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
7310template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7311 class t_ARGTYPES_02,
7312 class t_ARGTYPES_03,
7313 class t_ARGTYPES_04,
7314 class t_ARGTYPES_05,
7315 class t_ARGTYPES_06,
7316 class t_ARGTYPES_07,
7317 class t_ARGTYPES_08>
7318struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7329#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
7330template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7331 class t_ARGTYPES_02,
7332 class t_ARGTYPES_03,
7333 class t_ARGTYPES_04,
7334 class t_ARGTYPES_05,
7335 class t_ARGTYPES_06,
7336 class t_ARGTYPES_07,
7337 class t_ARGTYPES_08,
7338 class t_ARGTYPES_09>
7339struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7351#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
7352template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7353 class t_ARGTYPES_02,
7354 class t_ARGTYPES_03,
7355 class t_ARGTYPES_04,
7356 class t_ARGTYPES_05,
7357 class t_ARGTYPES_06,
7358 class t_ARGTYPES_07,
7359 class t_ARGTYPES_08,
7360 class t_ARGTYPES_09,
7361 class t_ARGTYPES_10>
7362struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7375#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
7376template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7377 class t_ARGTYPES_02,
7378 class t_ARGTYPES_03,
7379 class t_ARGTYPES_04,
7380 class t_ARGTYPES_05,
7381 class t_ARGTYPES_06,
7382 class t_ARGTYPES_07,
7383 class t_ARGTYPES_08,
7384 class t_ARGTYPES_09,
7385 class t_ARGTYPES_10,
7386 class t_ARGTYPES_11>
7387struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7401#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
7402template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7403 class t_ARGTYPES_02,
7404 class t_ARGTYPES_03,
7405 class t_ARGTYPES_04,
7406 class t_ARGTYPES_05,
7407 class t_ARGTYPES_06,
7408 class t_ARGTYPES_07,
7409 class t_ARGTYPES_08,
7410 class t_ARGTYPES_09,
7411 class t_ARGTYPES_10,
7412 class t_ARGTYPES_11,
7413 class t_ARGTYPES_12>
7414struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7429#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
7430template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7431 class t_ARGTYPES_02,
7432 class t_ARGTYPES_03,
7433 class t_ARGTYPES_04,
7434 class t_ARGTYPES_05,
7435 class t_ARGTYPES_06,
7436 class t_ARGTYPES_07,
7437 class t_ARGTYPES_08,
7438 class t_ARGTYPES_09,
7439 class t_ARGTYPES_10,
7440 class t_ARGTYPES_11,
7441 class t_ARGTYPES_12,
7442 class t_ARGTYPES_13>
7443struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7460#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
7461template <
class t_FN>
7462struct InvokeResult_FuncPtrImp<
7463 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7465 t_FN> : InvokeResult_ImpUtils {
7468 typedef decltype(myDeclval<t_FN>()()) type;
7472#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
7473template <
class t_FN,
class t_ARGTYPES_01>
7474struct InvokeResult_FuncPtrImp<
7475 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7476 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
7478 t_ARGTYPES_01> : InvokeResult_ImpUtils {
7481 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>())) type;
7485#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
7486template <
class t_FN,
class t_ARGTYPES_01,
7487 class t_ARGTYPES_02>
7488struct InvokeResult_FuncPtrImp<
7489 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7490 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7491 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
7494 t_ARGTYPES_02> : InvokeResult_ImpUtils {
7497 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7498 myDeclval<t_ARGTYPES_02>())) type;
7502#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
7503template <
class t_FN,
class t_ARGTYPES_01,
7504 class t_ARGTYPES_02,
7505 class t_ARGTYPES_03>
7506struct InvokeResult_FuncPtrImp<
7507 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7508 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7509 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7510 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
7514 t_ARGTYPES_03> : InvokeResult_ImpUtils {
7517 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7518 myDeclval<t_ARGTYPES_02>(),
7519 myDeclval<t_ARGTYPES_03>())) type;
7523#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
7524template <
class t_FN,
class t_ARGTYPES_01,
7525 class t_ARGTYPES_02,
7526 class t_ARGTYPES_03,
7527 class t_ARGTYPES_04>
7528struct InvokeResult_FuncPtrImp<
7529 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7530 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7531 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7532 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7533 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
7538 t_ARGTYPES_04> : InvokeResult_ImpUtils {
7541 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7542 myDeclval<t_ARGTYPES_02>(),
7543 myDeclval<t_ARGTYPES_03>(),
7544 myDeclval<t_ARGTYPES_04>())) type;
7548#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
7549template <
class t_FN,
class t_ARGTYPES_01,
7550 class t_ARGTYPES_02,
7551 class t_ARGTYPES_03,
7552 class t_ARGTYPES_04,
7553 class t_ARGTYPES_05>
7554struct InvokeResult_FuncPtrImp<
7555 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7556 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7557 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7558 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7559 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7560 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
7566 t_ARGTYPES_05> : InvokeResult_ImpUtils {
7569 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7570 myDeclval<t_ARGTYPES_02>(),
7571 myDeclval<t_ARGTYPES_03>(),
7572 myDeclval<t_ARGTYPES_04>(),
7573 myDeclval<t_ARGTYPES_05>())) type;
7577#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
7578template <
class t_FN,
class t_ARGTYPES_01,
7579 class t_ARGTYPES_02,
7580 class t_ARGTYPES_03,
7581 class t_ARGTYPES_04,
7582 class t_ARGTYPES_05,
7583 class t_ARGTYPES_06>
7584struct InvokeResult_FuncPtrImp<
7585 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7586 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7587 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7588 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7589 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7590 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7591 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
7598 t_ARGTYPES_06> : InvokeResult_ImpUtils {
7601 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7602 myDeclval<t_ARGTYPES_02>(),
7603 myDeclval<t_ARGTYPES_03>(),
7604 myDeclval<t_ARGTYPES_04>(),
7605 myDeclval<t_ARGTYPES_05>(),
7606 myDeclval<t_ARGTYPES_06>())) type;
7610#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
7611template <
class t_FN,
class t_ARGTYPES_01,
7612 class t_ARGTYPES_02,
7613 class t_ARGTYPES_03,
7614 class t_ARGTYPES_04,
7615 class t_ARGTYPES_05,
7616 class t_ARGTYPES_06,
7617 class t_ARGTYPES_07>
7618struct InvokeResult_FuncPtrImp<
7619 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7620 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7621 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7622 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7623 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7624 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7625 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7626 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
7634 t_ARGTYPES_07> : InvokeResult_ImpUtils {
7637 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7638 myDeclval<t_ARGTYPES_02>(),
7639 myDeclval<t_ARGTYPES_03>(),
7640 myDeclval<t_ARGTYPES_04>(),
7641 myDeclval<t_ARGTYPES_05>(),
7642 myDeclval<t_ARGTYPES_06>(),
7643 myDeclval<t_ARGTYPES_07>())) type;
7647#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
7648template <
class t_FN,
class t_ARGTYPES_01,
7649 class t_ARGTYPES_02,
7650 class t_ARGTYPES_03,
7651 class t_ARGTYPES_04,
7652 class t_ARGTYPES_05,
7653 class t_ARGTYPES_06,
7654 class t_ARGTYPES_07,
7655 class t_ARGTYPES_08>
7656struct InvokeResult_FuncPtrImp<
7657 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7658 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7659 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7660 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7661 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7662 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7663 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7664 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7665 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
7674 t_ARGTYPES_08> : InvokeResult_ImpUtils {
7677 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7678 myDeclval<t_ARGTYPES_02>(),
7679 myDeclval<t_ARGTYPES_03>(),
7680 myDeclval<t_ARGTYPES_04>(),
7681 myDeclval<t_ARGTYPES_05>(),
7682 myDeclval<t_ARGTYPES_06>(),
7683 myDeclval<t_ARGTYPES_07>(),
7684 myDeclval<t_ARGTYPES_08>())) type;
7688#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
7689template <
class t_FN,
class t_ARGTYPES_01,
7690 class t_ARGTYPES_02,
7691 class t_ARGTYPES_03,
7692 class t_ARGTYPES_04,
7693 class t_ARGTYPES_05,
7694 class t_ARGTYPES_06,
7695 class t_ARGTYPES_07,
7696 class t_ARGTYPES_08,
7697 class t_ARGTYPES_09>
7698struct InvokeResult_FuncPtrImp<
7699 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7700 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7701 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7702 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7703 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7704 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7705 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7706 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7707 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7708 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
7718 t_ARGTYPES_09> : InvokeResult_ImpUtils {
7721 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7722 myDeclval<t_ARGTYPES_02>(),
7723 myDeclval<t_ARGTYPES_03>(),
7724 myDeclval<t_ARGTYPES_04>(),
7725 myDeclval<t_ARGTYPES_05>(),
7726 myDeclval<t_ARGTYPES_06>(),
7727 myDeclval<t_ARGTYPES_07>(),
7728 myDeclval<t_ARGTYPES_08>(),
7729 myDeclval<t_ARGTYPES_09>())) type;
7733#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
7734template <
class t_FN,
class t_ARGTYPES_01,
7735 class t_ARGTYPES_02,
7736 class t_ARGTYPES_03,
7737 class t_ARGTYPES_04,
7738 class t_ARGTYPES_05,
7739 class t_ARGTYPES_06,
7740 class t_ARGTYPES_07,
7741 class t_ARGTYPES_08,
7742 class t_ARGTYPES_09,
7743 class t_ARGTYPES_10>
7744struct InvokeResult_FuncPtrImp<
7745 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7746 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7747 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7748 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7749 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7750 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7751 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7752 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7753 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7754 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
7755 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
7766 t_ARGTYPES_10> : InvokeResult_ImpUtils {
7769 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7770 myDeclval<t_ARGTYPES_02>(),
7771 myDeclval<t_ARGTYPES_03>(),
7772 myDeclval<t_ARGTYPES_04>(),
7773 myDeclval<t_ARGTYPES_05>(),
7774 myDeclval<t_ARGTYPES_06>(),
7775 myDeclval<t_ARGTYPES_07>(),
7776 myDeclval<t_ARGTYPES_08>(),
7777 myDeclval<t_ARGTYPES_09>(),
7778 myDeclval<t_ARGTYPES_10>())) type;
7782#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
7783template <
class t_FN,
class t_ARGTYPES_01,
7784 class t_ARGTYPES_02,
7785 class t_ARGTYPES_03,
7786 class t_ARGTYPES_04,
7787 class t_ARGTYPES_05,
7788 class t_ARGTYPES_06,
7789 class t_ARGTYPES_07,
7790 class t_ARGTYPES_08,
7791 class t_ARGTYPES_09,
7792 class t_ARGTYPES_10,
7793 class t_ARGTYPES_11>
7794struct InvokeResult_FuncPtrImp<
7795 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7796 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7797 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7798 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7799 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7800 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7801 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7802 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7803 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7804 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
7805 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
7806 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
7818 t_ARGTYPES_11> : InvokeResult_ImpUtils {
7821 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7822 myDeclval<t_ARGTYPES_02>(),
7823 myDeclval<t_ARGTYPES_03>(),
7824 myDeclval<t_ARGTYPES_04>(),
7825 myDeclval<t_ARGTYPES_05>(),
7826 myDeclval<t_ARGTYPES_06>(),
7827 myDeclval<t_ARGTYPES_07>(),
7828 myDeclval<t_ARGTYPES_08>(),
7829 myDeclval<t_ARGTYPES_09>(),
7830 myDeclval<t_ARGTYPES_10>(),
7831 myDeclval<t_ARGTYPES_11>())) type;
7835#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
7836template <
class t_FN,
class t_ARGTYPES_01,
7837 class t_ARGTYPES_02,
7838 class t_ARGTYPES_03,
7839 class t_ARGTYPES_04,
7840 class t_ARGTYPES_05,
7841 class t_ARGTYPES_06,
7842 class t_ARGTYPES_07,
7843 class t_ARGTYPES_08,
7844 class t_ARGTYPES_09,
7845 class t_ARGTYPES_10,
7846 class t_ARGTYPES_11,
7847 class t_ARGTYPES_12>
7848struct InvokeResult_FuncPtrImp<
7849 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7850 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7851 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7852 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7853 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7854 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7855 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7856 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7857 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7858 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
7859 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
7860 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
7861 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
7874 t_ARGTYPES_12> : InvokeResult_ImpUtils {
7877 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7878 myDeclval<t_ARGTYPES_02>(),
7879 myDeclval<t_ARGTYPES_03>(),
7880 myDeclval<t_ARGTYPES_04>(),
7881 myDeclval<t_ARGTYPES_05>(),
7882 myDeclval<t_ARGTYPES_06>(),
7883 myDeclval<t_ARGTYPES_07>(),
7884 myDeclval<t_ARGTYPES_08>(),
7885 myDeclval<t_ARGTYPES_09>(),
7886 myDeclval<t_ARGTYPES_10>(),
7887 myDeclval<t_ARGTYPES_11>(),
7888 myDeclval<t_ARGTYPES_12>())) type;
7892#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
7893template <
class t_FN,
class t_ARGTYPES_01,
7894 class t_ARGTYPES_02,
7895 class t_ARGTYPES_03,
7896 class t_ARGTYPES_04,
7897 class t_ARGTYPES_05,
7898 class t_ARGTYPES_06,
7899 class t_ARGTYPES_07,
7900 class t_ARGTYPES_08,
7901 class t_ARGTYPES_09,
7902 class t_ARGTYPES_10,
7903 class t_ARGTYPES_11,
7904 class t_ARGTYPES_12,
7905 class t_ARGTYPES_13>
7906struct InvokeResult_FuncPtrImp<
7907 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
7908 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
7909 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
7910 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
7911 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
7912 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
7913 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
7914 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
7915 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
7916 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
7917 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
7918 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
7919 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
7920 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
7934 t_ARGTYPES_13> : InvokeResult_ImpUtils {
7937 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES_01>(),
7938 myDeclval<t_ARGTYPES_02>(),
7939 myDeclval<t_ARGTYPES_03>(),
7940 myDeclval<t_ARGTYPES_04>(),
7941 myDeclval<t_ARGTYPES_05>(),
7942 myDeclval<t_ARGTYPES_06>(),
7943 myDeclval<t_ARGTYPES_07>(),
7944 myDeclval<t_ARGTYPES_08>(),
7945 myDeclval<t_ARGTYPES_09>(),
7946 myDeclval<t_ARGTYPES_10>(),
7947 myDeclval<t_ARGTYPES_11>(),
7948 myDeclval<t_ARGTYPES_12>(),
7949 myDeclval<t_ARGTYPES_13>())) type;
7954#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
7955template <
class t_VOID_TYPE,
class t_FN>
7956struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN> {
7967#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
7968template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01>
7969struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01> {
7980#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
7981template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7982 class t_ARGTYPES_02>
7983struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
7995#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
7996template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
7997 class t_ARGTYPES_02,
7998 class t_ARGTYPES_03>
7999struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8012#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
8013template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8014 class t_ARGTYPES_02,
8015 class t_ARGTYPES_03,
8016 class t_ARGTYPES_04>
8017struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8031#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
8032template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8033 class t_ARGTYPES_02,
8034 class t_ARGTYPES_03,
8035 class t_ARGTYPES_04,
8036 class t_ARGTYPES_05>
8037struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8052#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
8053template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8054 class t_ARGTYPES_02,
8055 class t_ARGTYPES_03,
8056 class t_ARGTYPES_04,
8057 class t_ARGTYPES_05,
8058 class t_ARGTYPES_06>
8059struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8075#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
8076template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8077 class t_ARGTYPES_02,
8078 class t_ARGTYPES_03,
8079 class t_ARGTYPES_04,
8080 class t_ARGTYPES_05,
8081 class t_ARGTYPES_06,
8082 class t_ARGTYPES_07>
8083struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8100#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
8101template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8102 class t_ARGTYPES_02,
8103 class t_ARGTYPES_03,
8104 class t_ARGTYPES_04,
8105 class t_ARGTYPES_05,
8106 class t_ARGTYPES_06,
8107 class t_ARGTYPES_07,
8108 class t_ARGTYPES_08>
8109struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8127#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
8128template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8129 class t_ARGTYPES_02,
8130 class t_ARGTYPES_03,
8131 class t_ARGTYPES_04,
8132 class t_ARGTYPES_05,
8133 class t_ARGTYPES_06,
8134 class t_ARGTYPES_07,
8135 class t_ARGTYPES_08,
8136 class t_ARGTYPES_09>
8137struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8156#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
8157template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8158 class t_ARGTYPES_02,
8159 class t_ARGTYPES_03,
8160 class t_ARGTYPES_04,
8161 class t_ARGTYPES_05,
8162 class t_ARGTYPES_06,
8163 class t_ARGTYPES_07,
8164 class t_ARGTYPES_08,
8165 class t_ARGTYPES_09,
8166 class t_ARGTYPES_10>
8167struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8187#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
8188template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8189 class t_ARGTYPES_02,
8190 class t_ARGTYPES_03,
8191 class t_ARGTYPES_04,
8192 class t_ARGTYPES_05,
8193 class t_ARGTYPES_06,
8194 class t_ARGTYPES_07,
8195 class t_ARGTYPES_08,
8196 class t_ARGTYPES_09,
8197 class t_ARGTYPES_10,
8198 class t_ARGTYPES_11>
8199struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8220#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
8221template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8222 class t_ARGTYPES_02,
8223 class t_ARGTYPES_03,
8224 class t_ARGTYPES_04,
8225 class t_ARGTYPES_05,
8226 class t_ARGTYPES_06,
8227 class t_ARGTYPES_07,
8228 class t_ARGTYPES_08,
8229 class t_ARGTYPES_09,
8230 class t_ARGTYPES_10,
8231 class t_ARGTYPES_11,
8232 class t_ARGTYPES_12>
8233struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8255#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
8256template <
class t_VOID_TYPE,
class t_FN,
class t_ARGTYPES_01,
8257 class t_ARGTYPES_02,
8258 class t_ARGTYPES_03,
8259 class t_ARGTYPES_04,
8260 class t_ARGTYPES_05,
8261 class t_ARGTYPES_06,
8262 class t_ARGTYPES_07,
8263 class t_ARGTYPES_08,
8264 class t_ARGTYPES_09,
8265 class t_ARGTYPES_10,
8266 class t_ARGTYPES_11,
8267 class t_ARGTYPES_12,
8268 class t_ARGTYPES_13>
8269struct InvokeResult_FuncPtrImp<t_VOID_TYPE, t_FN, t_ARGTYPES_01,
8295#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
8296template <
class t_VOID_TYPE,
8297 bool t_ARG1_DERIVES_FROM_CLASS,
8298 bool t_ARG1_IS_REFERENCE_WRAPPER,
8301#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
8302 ,
class t_ARGTYPES_0 = BSLS_COMPILERFEATURES_NILT
8305#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
8306 ,
class t_ARGTYPES_1 = BSLS_COMPILERFEATURES_NILT
8309#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
8310 ,
class t_ARGTYPES_2 = BSLS_COMPILERFEATURES_NILT
8313#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
8314 ,
class t_ARGTYPES_3 = BSLS_COMPILERFEATURES_NILT
8317#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
8318 ,
class t_ARGTYPES_4 = BSLS_COMPILERFEATURES_NILT
8321#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
8322 ,
class t_ARGTYPES_5 = BSLS_COMPILERFEATURES_NILT
8325#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
8326 ,
class t_ARGTYPES_6 = BSLS_COMPILERFEATURES_NILT
8329#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
8330 ,
class t_ARGTYPES_7 = BSLS_COMPILERFEATURES_NILT
8333#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
8334 ,
class t_ARGTYPES_8 = BSLS_COMPILERFEATURES_NILT
8337#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
8338 ,
class t_ARGTYPES_9 = BSLS_COMPILERFEATURES_NILT
8341#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
8342 ,
class t_ARGTYPES_10 = BSLS_COMPILERFEATURES_NILT
8345#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
8346 ,
class t_ARGTYPES_11 = BSLS_COMPILERFEATURES_NILT
8349#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
8350 ,
class t_ARGTYPES_12 = BSLS_COMPILERFEATURES_NILT
8352 ,
class = BSLS_COMPILERFEATURES_NILT>
8353struct InvokeResult_MemFuncPtrImpDispatch;
8357template <
class t_FN>
8358struct InvokeResult_MemFuncPtrImp<t_FN> {
8361#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
8362template <
class t_FN,
class t_ARG1TYPE>
8363struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE>
8364: InvokeResult_MemFuncPtrImpDispatch<
8367 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8368 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8369 IsReferenceWrapper<typename bsl::remove_const<
8370 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8376#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
8377template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01>
8378struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01>
8379: InvokeResult_MemFuncPtrImpDispatch<
8382 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8383 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8384 IsReferenceWrapper<typename bsl::remove_const<
8385 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8392#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
8393template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8394 class t_ARGTYPES_02>
8395struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8397: InvokeResult_MemFuncPtrImpDispatch<
8400 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8401 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8402 IsReferenceWrapper<typename bsl::remove_const<
8403 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8411#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
8412template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8413 class t_ARGTYPES_02,
8414 class t_ARGTYPES_03>
8415struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8418: InvokeResult_MemFuncPtrImpDispatch<
8421 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8422 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8423 IsReferenceWrapper<typename bsl::remove_const<
8424 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8433#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
8434template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8435 class t_ARGTYPES_02,
8436 class t_ARGTYPES_03,
8437 class t_ARGTYPES_04>
8438struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8442: InvokeResult_MemFuncPtrImpDispatch<
8445 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8446 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8447 IsReferenceWrapper<typename bsl::remove_const<
8448 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8458#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
8459template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8460 class t_ARGTYPES_02,
8461 class t_ARGTYPES_03,
8462 class t_ARGTYPES_04,
8463 class t_ARGTYPES_05>
8464struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8469: InvokeResult_MemFuncPtrImpDispatch<
8472 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8473 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8474 IsReferenceWrapper<typename bsl::remove_const<
8475 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8486#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
8487template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8488 class t_ARGTYPES_02,
8489 class t_ARGTYPES_03,
8490 class t_ARGTYPES_04,
8491 class t_ARGTYPES_05,
8492 class t_ARGTYPES_06>
8493struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8499: InvokeResult_MemFuncPtrImpDispatch<
8502 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8503 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8504 IsReferenceWrapper<typename bsl::remove_const<
8505 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8517#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
8518template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8519 class t_ARGTYPES_02,
8520 class t_ARGTYPES_03,
8521 class t_ARGTYPES_04,
8522 class t_ARGTYPES_05,
8523 class t_ARGTYPES_06,
8524 class t_ARGTYPES_07>
8525struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8532: InvokeResult_MemFuncPtrImpDispatch<
8535 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8536 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8537 IsReferenceWrapper<typename bsl::remove_const<
8538 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8551#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
8552template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8553 class t_ARGTYPES_02,
8554 class t_ARGTYPES_03,
8555 class t_ARGTYPES_04,
8556 class t_ARGTYPES_05,
8557 class t_ARGTYPES_06,
8558 class t_ARGTYPES_07,
8559 class t_ARGTYPES_08>
8560struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8568: InvokeResult_MemFuncPtrImpDispatch<
8571 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8572 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8573 IsReferenceWrapper<typename bsl::remove_const<
8574 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8588#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
8589template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8590 class t_ARGTYPES_02,
8591 class t_ARGTYPES_03,
8592 class t_ARGTYPES_04,
8593 class t_ARGTYPES_05,
8594 class t_ARGTYPES_06,
8595 class t_ARGTYPES_07,
8596 class t_ARGTYPES_08,
8597 class t_ARGTYPES_09>
8598struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8607: InvokeResult_MemFuncPtrImpDispatch<
8610 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8611 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8612 IsReferenceWrapper<typename bsl::remove_const<
8613 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8628#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
8629template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8630 class t_ARGTYPES_02,
8631 class t_ARGTYPES_03,
8632 class t_ARGTYPES_04,
8633 class t_ARGTYPES_05,
8634 class t_ARGTYPES_06,
8635 class t_ARGTYPES_07,
8636 class t_ARGTYPES_08,
8637 class t_ARGTYPES_09,
8638 class t_ARGTYPES_10>
8639struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8649: InvokeResult_MemFuncPtrImpDispatch<
8652 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8653 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8654 IsReferenceWrapper<typename bsl::remove_const<
8655 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8671#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
8672template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8673 class t_ARGTYPES_02,
8674 class t_ARGTYPES_03,
8675 class t_ARGTYPES_04,
8676 class t_ARGTYPES_05,
8677 class t_ARGTYPES_06,
8678 class t_ARGTYPES_07,
8679 class t_ARGTYPES_08,
8680 class t_ARGTYPES_09,
8681 class t_ARGTYPES_10,
8682 class t_ARGTYPES_11>
8683struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8694: InvokeResult_MemFuncPtrImpDispatch<
8697 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8698 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8699 IsReferenceWrapper<typename bsl::remove_const<
8700 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8717#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
8718template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8719 class t_ARGTYPES_02,
8720 class t_ARGTYPES_03,
8721 class t_ARGTYPES_04,
8722 class t_ARGTYPES_05,
8723 class t_ARGTYPES_06,
8724 class t_ARGTYPES_07,
8725 class t_ARGTYPES_08,
8726 class t_ARGTYPES_09,
8727 class t_ARGTYPES_10,
8728 class t_ARGTYPES_11,
8729 class t_ARGTYPES_12>
8730struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8742: InvokeResult_MemFuncPtrImpDispatch<
8745 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8746 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8747 IsReferenceWrapper<typename bsl::remove_const<
8748 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8766#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
8767template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
8768 class t_ARGTYPES_02,
8769 class t_ARGTYPES_03,
8770 class t_ARGTYPES_04,
8771 class t_ARGTYPES_05,
8772 class t_ARGTYPES_06,
8773 class t_ARGTYPES_07,
8774 class t_ARGTYPES_08,
8775 class t_ARGTYPES_09,
8776 class t_ARGTYPES_10,
8777 class t_ARGTYPES_11,
8778 class t_ARGTYPES_12,
8779 class t_ARGTYPES_13>
8780struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES_01,
8793: InvokeResult_MemFuncPtrImpDispatch<
8796 typename MemberFunctionPointerTraits<t_FN>::ClassType,
8797 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
8798 IsReferenceWrapper<typename bsl::remove_const<
8799 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
8819#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
8820template <
class t_FN>
8821struct InvokeResult_MemFuncPtrImp<t_FN> {
8823 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8832#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
8833template <
class t_FN,
class t_ARGTYPES_01>
8834struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01> {
8836 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8845#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
8846template <
class t_FN,
class t_ARGTYPES_01,
8847 class t_ARGTYPES_02>
8848struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8851 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8860#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
8861template <
class t_FN,
class t_ARGTYPES_01,
8862 class t_ARGTYPES_02,
8863 class t_ARGTYPES_03>
8864struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8868 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8877#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
8878template <
class t_FN,
class t_ARGTYPES_01,
8879 class t_ARGTYPES_02,
8880 class t_ARGTYPES_03,
8881 class t_ARGTYPES_04>
8882struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8887 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8896#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
8897template <
class t_FN,
class t_ARGTYPES_01,
8898 class t_ARGTYPES_02,
8899 class t_ARGTYPES_03,
8900 class t_ARGTYPES_04,
8901 class t_ARGTYPES_05>
8902struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8908 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8917#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
8918template <
class t_FN,
class t_ARGTYPES_01,
8919 class t_ARGTYPES_02,
8920 class t_ARGTYPES_03,
8921 class t_ARGTYPES_04,
8922 class t_ARGTYPES_05,
8923 class t_ARGTYPES_06>
8924struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8931 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8940#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
8941template <
class t_FN,
class t_ARGTYPES_01,
8942 class t_ARGTYPES_02,
8943 class t_ARGTYPES_03,
8944 class t_ARGTYPES_04,
8945 class t_ARGTYPES_05,
8946 class t_ARGTYPES_06,
8947 class t_ARGTYPES_07>
8948struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8956 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8965#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
8966template <
class t_FN,
class t_ARGTYPES_01,
8967 class t_ARGTYPES_02,
8968 class t_ARGTYPES_03,
8969 class t_ARGTYPES_04,
8970 class t_ARGTYPES_05,
8971 class t_ARGTYPES_06,
8972 class t_ARGTYPES_07,
8973 class t_ARGTYPES_08>
8974struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
8983 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
8992#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
8993template <
class t_FN,
class t_ARGTYPES_01,
8994 class t_ARGTYPES_02,
8995 class t_ARGTYPES_03,
8996 class t_ARGTYPES_04,
8997 class t_ARGTYPES_05,
8998 class t_ARGTYPES_06,
8999 class t_ARGTYPES_07,
9000 class t_ARGTYPES_08,
9001 class t_ARGTYPES_09>
9002struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
9012 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9021#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
9022template <
class t_FN,
class t_ARGTYPES_01,
9023 class t_ARGTYPES_02,
9024 class t_ARGTYPES_03,
9025 class t_ARGTYPES_04,
9026 class t_ARGTYPES_05,
9027 class t_ARGTYPES_06,
9028 class t_ARGTYPES_07,
9029 class t_ARGTYPES_08,
9030 class t_ARGTYPES_09,
9031 class t_ARGTYPES_10>
9032struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
9043 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9052#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
9053template <
class t_FN,
class t_ARGTYPES_01,
9054 class t_ARGTYPES_02,
9055 class t_ARGTYPES_03,
9056 class t_ARGTYPES_04,
9057 class t_ARGTYPES_05,
9058 class t_ARGTYPES_06,
9059 class t_ARGTYPES_07,
9060 class t_ARGTYPES_08,
9061 class t_ARGTYPES_09,
9062 class t_ARGTYPES_10,
9063 class t_ARGTYPES_11>
9064struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
9076 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9085#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
9086template <
class t_FN,
class t_ARGTYPES_01,
9087 class t_ARGTYPES_02,
9088 class t_ARGTYPES_03,
9089 class t_ARGTYPES_04,
9090 class t_ARGTYPES_05,
9091 class t_ARGTYPES_06,
9092 class t_ARGTYPES_07,
9093 class t_ARGTYPES_08,
9094 class t_ARGTYPES_09,
9095 class t_ARGTYPES_10,
9096 class t_ARGTYPES_11,
9097 class t_ARGTYPES_12>
9098struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
9111 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9120#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
9121template <
class t_FN,
class t_ARGTYPES_01,
9122 class t_ARGTYPES_02,
9123 class t_ARGTYPES_03,
9124 class t_ARGTYPES_04,
9125 class t_ARGTYPES_05,
9126 class t_ARGTYPES_06,
9127 class t_ARGTYPES_07,
9128 class t_ARGTYPES_08,
9129 class t_ARGTYPES_09,
9130 class t_ARGTYPES_10,
9131 class t_ARGTYPES_11,
9132 class t_ARGTYPES_12,
9133 class t_ARGTYPES_13>
9134struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES_01,
9148 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
9160#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
9161#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
9162template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9163 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE>
9164struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE> {
9168#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
9169template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9170 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9171 class t_ARGTYPES_01>
9172struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9177#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
9178template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9179 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9180 class t_ARGTYPES_01,
9181 class t_ARGTYPES_02>
9182struct 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 >= 3
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>
9194struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9201#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
9202template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9203 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9204 class t_ARGTYPES_01,
9205 class t_ARGTYPES_02,
9206 class t_ARGTYPES_03,
9207 class t_ARGTYPES_04>
9208struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9216#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
9217template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9218 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9219 class t_ARGTYPES_01,
9220 class t_ARGTYPES_02,
9221 class t_ARGTYPES_03,
9222 class t_ARGTYPES_04,
9223 class t_ARGTYPES_05>
9224struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9233#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
9234template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9235 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9236 class t_ARGTYPES_01,
9237 class t_ARGTYPES_02,
9238 class t_ARGTYPES_03,
9239 class t_ARGTYPES_04,
9240 class t_ARGTYPES_05,
9241 class t_ARGTYPES_06>
9242struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9252#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
9253template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9254 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9255 class t_ARGTYPES_01,
9256 class t_ARGTYPES_02,
9257 class t_ARGTYPES_03,
9258 class t_ARGTYPES_04,
9259 class t_ARGTYPES_05,
9260 class t_ARGTYPES_06,
9261 class t_ARGTYPES_07>
9262struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9273#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
9274template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9275 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9276 class t_ARGTYPES_01,
9277 class t_ARGTYPES_02,
9278 class t_ARGTYPES_03,
9279 class t_ARGTYPES_04,
9280 class t_ARGTYPES_05,
9281 class t_ARGTYPES_06,
9282 class t_ARGTYPES_07,
9283 class t_ARGTYPES_08>
9284struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9296#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
9297template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9298 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9299 class t_ARGTYPES_01,
9300 class t_ARGTYPES_02,
9301 class t_ARGTYPES_03,
9302 class t_ARGTYPES_04,
9303 class t_ARGTYPES_05,
9304 class t_ARGTYPES_06,
9305 class t_ARGTYPES_07,
9306 class t_ARGTYPES_08,
9307 class t_ARGTYPES_09>
9308struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9321#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
9322template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9323 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9324 class t_ARGTYPES_01,
9325 class t_ARGTYPES_02,
9326 class t_ARGTYPES_03,
9327 class t_ARGTYPES_04,
9328 class t_ARGTYPES_05,
9329 class t_ARGTYPES_06,
9330 class t_ARGTYPES_07,
9331 class t_ARGTYPES_08,
9332 class t_ARGTYPES_09,
9333 class t_ARGTYPES_10>
9334struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9348#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
9349template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9350 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9351 class t_ARGTYPES_01,
9352 class t_ARGTYPES_02,
9353 class t_ARGTYPES_03,
9354 class t_ARGTYPES_04,
9355 class t_ARGTYPES_05,
9356 class t_ARGTYPES_06,
9357 class t_ARGTYPES_07,
9358 class t_ARGTYPES_08,
9359 class t_ARGTYPES_09,
9360 class t_ARGTYPES_10,
9361 class t_ARGTYPES_11>
9362struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9377#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
9378template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9379 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9380 class t_ARGTYPES_01,
9381 class t_ARGTYPES_02,
9382 class t_ARGTYPES_03,
9383 class t_ARGTYPES_04,
9384 class t_ARGTYPES_05,
9385 class t_ARGTYPES_06,
9386 class t_ARGTYPES_07,
9387 class t_ARGTYPES_08,
9388 class t_ARGTYPES_09,
9389 class t_ARGTYPES_10,
9390 class t_ARGTYPES_11,
9391 class t_ARGTYPES_12>
9392struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9408#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
9409template <
class t_VOID_TYPE,
bool t_ARG1_DERIVES_FROM_CLASS,
9410 bool t_ARG1_IS_REFERENCE_WRAPPER,
class t_FN,
class t_ARG1TYPE,
9411 class t_ARGTYPES_01,
9412 class t_ARGTYPES_02,
9413 class t_ARGTYPES_03,
9414 class t_ARGTYPES_04,
9415 class t_ARGTYPES_05,
9416 class t_ARGTYPES_06,
9417 class t_ARGTYPES_07,
9418 class t_ARGTYPES_08,
9419 class t_ARGTYPES_09,
9420 class t_ARGTYPES_10,
9421 class t_ARGTYPES_11,
9422 class t_ARGTYPES_12,
9423 class t_ARGTYPES_13>
9424struct InvokeResult_MemFuncPtrImpDispatch<t_VOID_TYPE, t_ARG1_DERIVES_FROM_CLASS, t_ARG1_IS_REFERENCE_WRAPPER, t_FN, t_ARG1TYPE,
9442#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
9443template <
class t_FN,
class t_ARG1TYPE>
9444struct InvokeResult_MemFuncPtrImpDispatch<
9445 typename
bslmf::VoidType<
9446 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9447 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9452 t_ARG1TYPE> : InvokeResult_ImpUtils {
9455 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9456 myDeclval<t_FN>())()) type;
9460#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
9461template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01>
9462struct InvokeResult_MemFuncPtrImpDispatch<
9463 typename
bslmf::VoidType<
9464 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9465 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9466 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
9471 t_ARGTYPES_01> : InvokeResult_ImpUtils {
9474 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9475 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>())) type;
9479#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
9480template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9481 class t_ARGTYPES_02>
9482struct InvokeResult_MemFuncPtrImpDispatch<
9483 typename
bslmf::VoidType<
9484 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9485 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9486 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9487 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
9493 t_ARGTYPES_02> : InvokeResult_ImpUtils {
9496 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9497 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9498 myDeclval<t_ARGTYPES_02>())) type;
9502#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
9503template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9504 class t_ARGTYPES_02,
9505 class t_ARGTYPES_03>
9506struct InvokeResult_MemFuncPtrImpDispatch<
9507 typename
bslmf::VoidType<
9508 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9509 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9510 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9511 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9512 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
9519 t_ARGTYPES_03> : InvokeResult_ImpUtils {
9522 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9523 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9524 myDeclval<t_ARGTYPES_02>(),
9525 myDeclval<t_ARGTYPES_03>())) type;
9529#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
9530template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9531 class t_ARGTYPES_02,
9532 class t_ARGTYPES_03,
9533 class t_ARGTYPES_04>
9534struct InvokeResult_MemFuncPtrImpDispatch<
9535 typename
bslmf::VoidType<
9536 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9537 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9538 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9539 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9540 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9541 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
9549 t_ARGTYPES_04> : InvokeResult_ImpUtils {
9552 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9553 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9554 myDeclval<t_ARGTYPES_02>(),
9555 myDeclval<t_ARGTYPES_03>(),
9556 myDeclval<t_ARGTYPES_04>())) type;
9560#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
9561template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9562 class t_ARGTYPES_02,
9563 class t_ARGTYPES_03,
9564 class t_ARGTYPES_04,
9565 class t_ARGTYPES_05>
9566struct InvokeResult_MemFuncPtrImpDispatch<
9567 typename
bslmf::VoidType<
9568 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9569 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9570 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9571 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9572 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9573 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9574 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
9583 t_ARGTYPES_05> : InvokeResult_ImpUtils {
9586 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9587 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9588 myDeclval<t_ARGTYPES_02>(),
9589 myDeclval<t_ARGTYPES_03>(),
9590 myDeclval<t_ARGTYPES_04>(),
9591 myDeclval<t_ARGTYPES_05>())) type;
9595#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
9596template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9597 class t_ARGTYPES_02,
9598 class t_ARGTYPES_03,
9599 class t_ARGTYPES_04,
9600 class t_ARGTYPES_05,
9601 class t_ARGTYPES_06>
9602struct InvokeResult_MemFuncPtrImpDispatch<
9603 typename
bslmf::VoidType<
9604 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9605 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9606 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9607 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9608 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9609 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9610 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9611 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
9621 t_ARGTYPES_06> : InvokeResult_ImpUtils {
9624 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9625 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9626 myDeclval<t_ARGTYPES_02>(),
9627 myDeclval<t_ARGTYPES_03>(),
9628 myDeclval<t_ARGTYPES_04>(),
9629 myDeclval<t_ARGTYPES_05>(),
9630 myDeclval<t_ARGTYPES_06>())) type;
9634#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
9635template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9636 class t_ARGTYPES_02,
9637 class t_ARGTYPES_03,
9638 class t_ARGTYPES_04,
9639 class t_ARGTYPES_05,
9640 class t_ARGTYPES_06,
9641 class t_ARGTYPES_07>
9642struct InvokeResult_MemFuncPtrImpDispatch<
9643 typename
bslmf::VoidType<
9644 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9645 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9646 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9647 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9648 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9649 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9650 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9651 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9652 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
9663 t_ARGTYPES_07> : InvokeResult_ImpUtils {
9666 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9667 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9668 myDeclval<t_ARGTYPES_02>(),
9669 myDeclval<t_ARGTYPES_03>(),
9670 myDeclval<t_ARGTYPES_04>(),
9671 myDeclval<t_ARGTYPES_05>(),
9672 myDeclval<t_ARGTYPES_06>(),
9673 myDeclval<t_ARGTYPES_07>())) type;
9677#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
9678template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9679 class t_ARGTYPES_02,
9680 class t_ARGTYPES_03,
9681 class t_ARGTYPES_04,
9682 class t_ARGTYPES_05,
9683 class t_ARGTYPES_06,
9684 class t_ARGTYPES_07,
9685 class t_ARGTYPES_08>
9686struct InvokeResult_MemFuncPtrImpDispatch<
9687 typename
bslmf::VoidType<
9688 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9689 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9690 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9691 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9692 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9693 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9694 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9695 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9696 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9697 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
9709 t_ARGTYPES_08> : InvokeResult_ImpUtils {
9712 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9713 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9714 myDeclval<t_ARGTYPES_02>(),
9715 myDeclval<t_ARGTYPES_03>(),
9716 myDeclval<t_ARGTYPES_04>(),
9717 myDeclval<t_ARGTYPES_05>(),
9718 myDeclval<t_ARGTYPES_06>(),
9719 myDeclval<t_ARGTYPES_07>(),
9720 myDeclval<t_ARGTYPES_08>())) type;
9724#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
9725template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9726 class t_ARGTYPES_02,
9727 class t_ARGTYPES_03,
9728 class t_ARGTYPES_04,
9729 class t_ARGTYPES_05,
9730 class t_ARGTYPES_06,
9731 class t_ARGTYPES_07,
9732 class t_ARGTYPES_08,
9733 class t_ARGTYPES_09>
9734struct InvokeResult_MemFuncPtrImpDispatch<
9735 typename
bslmf::VoidType<
9736 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9737 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9738 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9739 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9740 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9741 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9742 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9743 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9744 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9745 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9746 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
9759 t_ARGTYPES_09> : InvokeResult_ImpUtils {
9762 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9763 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9764 myDeclval<t_ARGTYPES_02>(),
9765 myDeclval<t_ARGTYPES_03>(),
9766 myDeclval<t_ARGTYPES_04>(),
9767 myDeclval<t_ARGTYPES_05>(),
9768 myDeclval<t_ARGTYPES_06>(),
9769 myDeclval<t_ARGTYPES_07>(),
9770 myDeclval<t_ARGTYPES_08>(),
9771 myDeclval<t_ARGTYPES_09>())) type;
9775#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
9776template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9777 class t_ARGTYPES_02,
9778 class t_ARGTYPES_03,
9779 class t_ARGTYPES_04,
9780 class t_ARGTYPES_05,
9781 class t_ARGTYPES_06,
9782 class t_ARGTYPES_07,
9783 class t_ARGTYPES_08,
9784 class t_ARGTYPES_09,
9785 class t_ARGTYPES_10>
9786struct InvokeResult_MemFuncPtrImpDispatch<
9787 typename
bslmf::VoidType<
9788 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9789 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9790 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9791 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9792 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9793 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9794 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9795 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9796 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9797 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9798 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
9799 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
9813 t_ARGTYPES_10> : InvokeResult_ImpUtils {
9816 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9817 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9818 myDeclval<t_ARGTYPES_02>(),
9819 myDeclval<t_ARGTYPES_03>(),
9820 myDeclval<t_ARGTYPES_04>(),
9821 myDeclval<t_ARGTYPES_05>(),
9822 myDeclval<t_ARGTYPES_06>(),
9823 myDeclval<t_ARGTYPES_07>(),
9824 myDeclval<t_ARGTYPES_08>(),
9825 myDeclval<t_ARGTYPES_09>(),
9826 myDeclval<t_ARGTYPES_10>())) type;
9830#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
9831template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9832 class t_ARGTYPES_02,
9833 class t_ARGTYPES_03,
9834 class t_ARGTYPES_04,
9835 class t_ARGTYPES_05,
9836 class t_ARGTYPES_06,
9837 class t_ARGTYPES_07,
9838 class t_ARGTYPES_08,
9839 class t_ARGTYPES_09,
9840 class t_ARGTYPES_10,
9841 class t_ARGTYPES_11>
9842struct InvokeResult_MemFuncPtrImpDispatch<
9843 typename
bslmf::VoidType<
9844 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9845 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9846 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9847 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9848 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9849 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9850 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9851 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9852 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9853 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9854 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
9855 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
9856 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
9871 t_ARGTYPES_11> : InvokeResult_ImpUtils {
9874 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9875 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9876 myDeclval<t_ARGTYPES_02>(),
9877 myDeclval<t_ARGTYPES_03>(),
9878 myDeclval<t_ARGTYPES_04>(),
9879 myDeclval<t_ARGTYPES_05>(),
9880 myDeclval<t_ARGTYPES_06>(),
9881 myDeclval<t_ARGTYPES_07>(),
9882 myDeclval<t_ARGTYPES_08>(),
9883 myDeclval<t_ARGTYPES_09>(),
9884 myDeclval<t_ARGTYPES_10>(),
9885 myDeclval<t_ARGTYPES_11>())) type;
9889#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
9890template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9891 class t_ARGTYPES_02,
9892 class t_ARGTYPES_03,
9893 class t_ARGTYPES_04,
9894 class t_ARGTYPES_05,
9895 class t_ARGTYPES_06,
9896 class t_ARGTYPES_07,
9897 class t_ARGTYPES_08,
9898 class t_ARGTYPES_09,
9899 class t_ARGTYPES_10,
9900 class t_ARGTYPES_11,
9901 class t_ARGTYPES_12>
9902struct InvokeResult_MemFuncPtrImpDispatch<
9903 typename
bslmf::VoidType<
9904 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9905 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9906 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9907 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9908 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9909 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9910 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9911 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9912 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9913 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9914 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
9915 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
9916 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
9917 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
9933 t_ARGTYPES_12> : InvokeResult_ImpUtils {
9936 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
9937 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
9938 myDeclval<t_ARGTYPES_02>(),
9939 myDeclval<t_ARGTYPES_03>(),
9940 myDeclval<t_ARGTYPES_04>(),
9941 myDeclval<t_ARGTYPES_05>(),
9942 myDeclval<t_ARGTYPES_06>(),
9943 myDeclval<t_ARGTYPES_07>(),
9944 myDeclval<t_ARGTYPES_08>(),
9945 myDeclval<t_ARGTYPES_09>(),
9946 myDeclval<t_ARGTYPES_10>(),
9947 myDeclval<t_ARGTYPES_11>(),
9948 myDeclval<t_ARGTYPES_12>())) type;
9952#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
9953template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
9954 class t_ARGTYPES_02,
9955 class t_ARGTYPES_03,
9956 class t_ARGTYPES_04,
9957 class t_ARGTYPES_05,
9958 class t_ARGTYPES_06,
9959 class t_ARGTYPES_07,
9960 class t_ARGTYPES_08,
9961 class t_ARGTYPES_09,
9962 class t_ARGTYPES_10,
9963 class t_ARGTYPES_11,
9964 class t_ARGTYPES_12,
9965 class t_ARGTYPES_13>
9966struct InvokeResult_MemFuncPtrImpDispatch<
9967 typename
bslmf::VoidType<
9968 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
9969 InvokeResult_ImpUtils::myDeclval<t_FN>())(
9970 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
9971 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
9972 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
9973 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
9974 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
9975 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
9976 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
9977 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
9978 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
9979 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
9980 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
9981 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
9982 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
9999 t_ARGTYPES_13> : InvokeResult_ImpUtils {
10002 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
10003 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10004 myDeclval<t_ARGTYPES_02>(),
10005 myDeclval<t_ARGTYPES_03>(),
10006 myDeclval<t_ARGTYPES_04>(),
10007 myDeclval<t_ARGTYPES_05>(),
10008 myDeclval<t_ARGTYPES_06>(),
10009 myDeclval<t_ARGTYPES_07>(),
10010 myDeclval<t_ARGTYPES_08>(),
10011 myDeclval<t_ARGTYPES_09>(),
10012 myDeclval<t_ARGTYPES_10>(),
10013 myDeclval<t_ARGTYPES_11>(),
10014 myDeclval<t_ARGTYPES_12>(),
10015 myDeclval<t_ARGTYPES_13>())) type;
10020#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
10021template <
class t_FN,
class t_ARG1TYPE>
10022struct InvokeResult_MemFuncPtrImpDispatch<
10023 typename
bslmf::VoidType<
10024 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10025 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10030 t_ARG1TYPE> : InvokeResult_ImpUtils {
10033 typedef decltype((myDeclval<t_ARG1TYPE>().*
10034 myDeclval<t_FN>())()) type;
10038#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
10039template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01>
10040struct InvokeResult_MemFuncPtrImpDispatch<
10041 typename
bslmf::VoidType<
10042 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10043 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10044 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
10049 t_ARGTYPES_01> : InvokeResult_ImpUtils {
10052 typedef decltype((myDeclval<t_ARG1TYPE>().*
10053 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>())) type;
10057#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
10058template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10059 class t_ARGTYPES_02>
10060struct InvokeResult_MemFuncPtrImpDispatch<
10061 typename
bslmf::VoidType<
10062 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10063 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10064 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10065 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
10071 t_ARGTYPES_02> : InvokeResult_ImpUtils {
10074 typedef decltype((myDeclval<t_ARG1TYPE>().*
10075 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10076 myDeclval<t_ARGTYPES_02>())) type;
10080#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
10081template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10082 class t_ARGTYPES_02,
10083 class t_ARGTYPES_03>
10084struct InvokeResult_MemFuncPtrImpDispatch<
10085 typename
bslmf::VoidType<
10086 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10087 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10088 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10089 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10090 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
10097 t_ARGTYPES_03> : InvokeResult_ImpUtils {
10100 typedef decltype((myDeclval<t_ARG1TYPE>().*
10101 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10102 myDeclval<t_ARGTYPES_02>(),
10103 myDeclval<t_ARGTYPES_03>())) type;
10107#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
10108template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10109 class t_ARGTYPES_02,
10110 class t_ARGTYPES_03,
10111 class t_ARGTYPES_04>
10112struct InvokeResult_MemFuncPtrImpDispatch<
10113 typename
bslmf::VoidType<
10114 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10115 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10116 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10117 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10118 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10119 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
10127 t_ARGTYPES_04> : InvokeResult_ImpUtils {
10130 typedef decltype((myDeclval<t_ARG1TYPE>().*
10131 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10132 myDeclval<t_ARGTYPES_02>(),
10133 myDeclval<t_ARGTYPES_03>(),
10134 myDeclval<t_ARGTYPES_04>())) type;
10138#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
10139template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10140 class t_ARGTYPES_02,
10141 class t_ARGTYPES_03,
10142 class t_ARGTYPES_04,
10143 class t_ARGTYPES_05>
10144struct InvokeResult_MemFuncPtrImpDispatch<
10145 typename
bslmf::VoidType<
10146 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10147 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10148 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10149 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10150 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10151 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10152 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
10161 t_ARGTYPES_05> : InvokeResult_ImpUtils {
10164 typedef decltype((myDeclval<t_ARG1TYPE>().*
10165 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10166 myDeclval<t_ARGTYPES_02>(),
10167 myDeclval<t_ARGTYPES_03>(),
10168 myDeclval<t_ARGTYPES_04>(),
10169 myDeclval<t_ARGTYPES_05>())) type;
10173#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
10174template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10175 class t_ARGTYPES_02,
10176 class t_ARGTYPES_03,
10177 class t_ARGTYPES_04,
10178 class t_ARGTYPES_05,
10179 class t_ARGTYPES_06>
10180struct InvokeResult_MemFuncPtrImpDispatch<
10181 typename
bslmf::VoidType<
10182 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10183 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10184 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10185 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10186 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10187 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10188 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10189 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
10199 t_ARGTYPES_06> : InvokeResult_ImpUtils {
10202 typedef decltype((myDeclval<t_ARG1TYPE>().*
10203 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10204 myDeclval<t_ARGTYPES_02>(),
10205 myDeclval<t_ARGTYPES_03>(),
10206 myDeclval<t_ARGTYPES_04>(),
10207 myDeclval<t_ARGTYPES_05>(),
10208 myDeclval<t_ARGTYPES_06>())) type;
10212#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
10213template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10214 class t_ARGTYPES_02,
10215 class t_ARGTYPES_03,
10216 class t_ARGTYPES_04,
10217 class t_ARGTYPES_05,
10218 class t_ARGTYPES_06,
10219 class t_ARGTYPES_07>
10220struct InvokeResult_MemFuncPtrImpDispatch<
10221 typename
bslmf::VoidType<
10222 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10223 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10224 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10225 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10226 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10227 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10228 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10229 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10230 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
10241 t_ARGTYPES_07> : InvokeResult_ImpUtils {
10244 typedef decltype((myDeclval<t_ARG1TYPE>().*
10245 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10246 myDeclval<t_ARGTYPES_02>(),
10247 myDeclval<t_ARGTYPES_03>(),
10248 myDeclval<t_ARGTYPES_04>(),
10249 myDeclval<t_ARGTYPES_05>(),
10250 myDeclval<t_ARGTYPES_06>(),
10251 myDeclval<t_ARGTYPES_07>())) type;
10255#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
10256template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10257 class t_ARGTYPES_02,
10258 class t_ARGTYPES_03,
10259 class t_ARGTYPES_04,
10260 class t_ARGTYPES_05,
10261 class t_ARGTYPES_06,
10262 class t_ARGTYPES_07,
10263 class t_ARGTYPES_08>
10264struct InvokeResult_MemFuncPtrImpDispatch<
10265 typename
bslmf::VoidType<
10266 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10267 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10268 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10269 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10270 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10271 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10272 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10273 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10274 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10275 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
10287 t_ARGTYPES_08> : InvokeResult_ImpUtils {
10290 typedef decltype((myDeclval<t_ARG1TYPE>().*
10291 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10292 myDeclval<t_ARGTYPES_02>(),
10293 myDeclval<t_ARGTYPES_03>(),
10294 myDeclval<t_ARGTYPES_04>(),
10295 myDeclval<t_ARGTYPES_05>(),
10296 myDeclval<t_ARGTYPES_06>(),
10297 myDeclval<t_ARGTYPES_07>(),
10298 myDeclval<t_ARGTYPES_08>())) type;
10302#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
10303template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10304 class t_ARGTYPES_02,
10305 class t_ARGTYPES_03,
10306 class t_ARGTYPES_04,
10307 class t_ARGTYPES_05,
10308 class t_ARGTYPES_06,
10309 class t_ARGTYPES_07,
10310 class t_ARGTYPES_08,
10311 class t_ARGTYPES_09>
10312struct InvokeResult_MemFuncPtrImpDispatch<
10313 typename
bslmf::VoidType<
10314 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10315 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10316 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10317 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10318 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10319 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10320 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10321 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10322 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10323 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10324 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
10337 t_ARGTYPES_09> : InvokeResult_ImpUtils {
10340 typedef decltype((myDeclval<t_ARG1TYPE>().*
10341 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10342 myDeclval<t_ARGTYPES_02>(),
10343 myDeclval<t_ARGTYPES_03>(),
10344 myDeclval<t_ARGTYPES_04>(),
10345 myDeclval<t_ARGTYPES_05>(),
10346 myDeclval<t_ARGTYPES_06>(),
10347 myDeclval<t_ARGTYPES_07>(),
10348 myDeclval<t_ARGTYPES_08>(),
10349 myDeclval<t_ARGTYPES_09>())) type;
10353#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
10354template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10355 class t_ARGTYPES_02,
10356 class t_ARGTYPES_03,
10357 class t_ARGTYPES_04,
10358 class t_ARGTYPES_05,
10359 class t_ARGTYPES_06,
10360 class t_ARGTYPES_07,
10361 class t_ARGTYPES_08,
10362 class t_ARGTYPES_09,
10363 class t_ARGTYPES_10>
10364struct InvokeResult_MemFuncPtrImpDispatch<
10365 typename
bslmf::VoidType<
10366 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10367 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10368 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10369 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10370 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10371 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10372 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10373 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10374 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10375 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10376 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10377 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
10391 t_ARGTYPES_10> : InvokeResult_ImpUtils {
10394 typedef decltype((myDeclval<t_ARG1TYPE>().*
10395 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10396 myDeclval<t_ARGTYPES_02>(),
10397 myDeclval<t_ARGTYPES_03>(),
10398 myDeclval<t_ARGTYPES_04>(),
10399 myDeclval<t_ARGTYPES_05>(),
10400 myDeclval<t_ARGTYPES_06>(),
10401 myDeclval<t_ARGTYPES_07>(),
10402 myDeclval<t_ARGTYPES_08>(),
10403 myDeclval<t_ARGTYPES_09>(),
10404 myDeclval<t_ARGTYPES_10>())) type;
10408#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
10409template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10410 class t_ARGTYPES_02,
10411 class t_ARGTYPES_03,
10412 class t_ARGTYPES_04,
10413 class t_ARGTYPES_05,
10414 class t_ARGTYPES_06,
10415 class t_ARGTYPES_07,
10416 class t_ARGTYPES_08,
10417 class t_ARGTYPES_09,
10418 class t_ARGTYPES_10,
10419 class t_ARGTYPES_11>
10420struct InvokeResult_MemFuncPtrImpDispatch<
10421 typename
bslmf::VoidType<
10422 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10423 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10424 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10425 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10426 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10427 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10428 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10429 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10430 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10431 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10432 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10433 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
10434 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
10449 t_ARGTYPES_11> : InvokeResult_ImpUtils {
10452 typedef decltype((myDeclval<t_ARG1TYPE>().*
10453 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10454 myDeclval<t_ARGTYPES_02>(),
10455 myDeclval<t_ARGTYPES_03>(),
10456 myDeclval<t_ARGTYPES_04>(),
10457 myDeclval<t_ARGTYPES_05>(),
10458 myDeclval<t_ARGTYPES_06>(),
10459 myDeclval<t_ARGTYPES_07>(),
10460 myDeclval<t_ARGTYPES_08>(),
10461 myDeclval<t_ARGTYPES_09>(),
10462 myDeclval<t_ARGTYPES_10>(),
10463 myDeclval<t_ARGTYPES_11>())) type;
10467#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
10468template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10469 class t_ARGTYPES_02,
10470 class t_ARGTYPES_03,
10471 class t_ARGTYPES_04,
10472 class t_ARGTYPES_05,
10473 class t_ARGTYPES_06,
10474 class t_ARGTYPES_07,
10475 class t_ARGTYPES_08,
10476 class t_ARGTYPES_09,
10477 class t_ARGTYPES_10,
10478 class t_ARGTYPES_11,
10479 class t_ARGTYPES_12>
10480struct InvokeResult_MemFuncPtrImpDispatch<
10481 typename
bslmf::VoidType<
10482 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10483 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10484 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10485 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10486 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10487 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10488 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10489 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10490 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10491 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10492 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10493 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
10494 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
10495 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
10511 t_ARGTYPES_12> : InvokeResult_ImpUtils {
10514 typedef decltype((myDeclval<t_ARG1TYPE>().*
10515 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10516 myDeclval<t_ARGTYPES_02>(),
10517 myDeclval<t_ARGTYPES_03>(),
10518 myDeclval<t_ARGTYPES_04>(),
10519 myDeclval<t_ARGTYPES_05>(),
10520 myDeclval<t_ARGTYPES_06>(),
10521 myDeclval<t_ARGTYPES_07>(),
10522 myDeclval<t_ARGTYPES_08>(),
10523 myDeclval<t_ARGTYPES_09>(),
10524 myDeclval<t_ARGTYPES_10>(),
10525 myDeclval<t_ARGTYPES_11>(),
10526 myDeclval<t_ARGTYPES_12>())) type;
10530#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
10531template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10532 class t_ARGTYPES_02,
10533 class t_ARGTYPES_03,
10534 class t_ARGTYPES_04,
10535 class t_ARGTYPES_05,
10536 class t_ARGTYPES_06,
10537 class t_ARGTYPES_07,
10538 class t_ARGTYPES_08,
10539 class t_ARGTYPES_09,
10540 class t_ARGTYPES_10,
10541 class t_ARGTYPES_11,
10542 class t_ARGTYPES_12,
10543 class t_ARGTYPES_13>
10544struct InvokeResult_MemFuncPtrImpDispatch<
10545 typename
bslmf::VoidType<
10546 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
10547 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10548 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10549 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10550 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10551 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10552 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10553 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10554 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10555 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10556 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10557 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
10558 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
10559 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
10560 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
10577 t_ARGTYPES_13> : InvokeResult_ImpUtils {
10580 typedef decltype((myDeclval<t_ARG1TYPE>().*
10581 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10582 myDeclval<t_ARGTYPES_02>(),
10583 myDeclval<t_ARGTYPES_03>(),
10584 myDeclval<t_ARGTYPES_04>(),
10585 myDeclval<t_ARGTYPES_05>(),
10586 myDeclval<t_ARGTYPES_06>(),
10587 myDeclval<t_ARGTYPES_07>(),
10588 myDeclval<t_ARGTYPES_08>(),
10589 myDeclval<t_ARGTYPES_09>(),
10590 myDeclval<t_ARGTYPES_10>(),
10591 myDeclval<t_ARGTYPES_11>(),
10592 myDeclval<t_ARGTYPES_12>(),
10593 myDeclval<t_ARGTYPES_13>())) type;
10598#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
10599template <
class t_FN,
class t_ARG1TYPE>
10600struct InvokeResult_MemFuncPtrImpDispatch<
10601 typename
bslmf::VoidType<
10602 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10603 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10608 t_ARG1TYPE> : InvokeResult_ImpUtils {
10611 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10612 myDeclval<t_FN>())()) type;
10616#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
10617template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01>
10618struct InvokeResult_MemFuncPtrImpDispatch<
10619 typename
bslmf::VoidType<
10620 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10621 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10622 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>()))>::type,
10627 t_ARGTYPES_01> : InvokeResult_ImpUtils {
10630 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10631 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>())) type;
10635#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
10636template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10637 class t_ARGTYPES_02>
10638struct InvokeResult_MemFuncPtrImpDispatch<
10639 typename
bslmf::VoidType<
10640 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10641 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10642 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10643 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>()))>::type,
10649 t_ARGTYPES_02> : InvokeResult_ImpUtils {
10652 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10653 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10654 myDeclval<t_ARGTYPES_02>())) type;
10658#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
10659template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10660 class t_ARGTYPES_02,
10661 class t_ARGTYPES_03>
10662struct InvokeResult_MemFuncPtrImpDispatch<
10663 typename
bslmf::VoidType<
10664 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10665 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10666 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10667 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10668 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>()))>::type,
10675 t_ARGTYPES_03> : InvokeResult_ImpUtils {
10678 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10679 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10680 myDeclval<t_ARGTYPES_02>(),
10681 myDeclval<t_ARGTYPES_03>())) type;
10685#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
10686template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10687 class t_ARGTYPES_02,
10688 class t_ARGTYPES_03,
10689 class t_ARGTYPES_04>
10690struct InvokeResult_MemFuncPtrImpDispatch<
10691 typename
bslmf::VoidType<
10692 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10693 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10694 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10695 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10696 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10697 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>()))>::type,
10705 t_ARGTYPES_04> : InvokeResult_ImpUtils {
10708 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10709 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10710 myDeclval<t_ARGTYPES_02>(),
10711 myDeclval<t_ARGTYPES_03>(),
10712 myDeclval<t_ARGTYPES_04>())) type;
10716#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
10717template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10718 class t_ARGTYPES_02,
10719 class t_ARGTYPES_03,
10720 class t_ARGTYPES_04,
10721 class t_ARGTYPES_05>
10722struct InvokeResult_MemFuncPtrImpDispatch<
10723 typename
bslmf::VoidType<
10724 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10725 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10726 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10727 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10728 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10729 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10730 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>()))>::type,
10739 t_ARGTYPES_05> : InvokeResult_ImpUtils {
10742 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10743 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10744 myDeclval<t_ARGTYPES_02>(),
10745 myDeclval<t_ARGTYPES_03>(),
10746 myDeclval<t_ARGTYPES_04>(),
10747 myDeclval<t_ARGTYPES_05>())) type;
10751#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
10752template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10753 class t_ARGTYPES_02,
10754 class t_ARGTYPES_03,
10755 class t_ARGTYPES_04,
10756 class t_ARGTYPES_05,
10757 class t_ARGTYPES_06>
10758struct InvokeResult_MemFuncPtrImpDispatch<
10759 typename
bslmf::VoidType<
10760 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10761 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10762 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10763 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10764 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10765 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10766 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10767 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>()))>::type,
10777 t_ARGTYPES_06> : InvokeResult_ImpUtils {
10780 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10781 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10782 myDeclval<t_ARGTYPES_02>(),
10783 myDeclval<t_ARGTYPES_03>(),
10784 myDeclval<t_ARGTYPES_04>(),
10785 myDeclval<t_ARGTYPES_05>(),
10786 myDeclval<t_ARGTYPES_06>())) type;
10790#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
10791template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10792 class t_ARGTYPES_02,
10793 class t_ARGTYPES_03,
10794 class t_ARGTYPES_04,
10795 class t_ARGTYPES_05,
10796 class t_ARGTYPES_06,
10797 class t_ARGTYPES_07>
10798struct InvokeResult_MemFuncPtrImpDispatch<
10799 typename
bslmf::VoidType<
10800 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10801 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10802 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10803 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10804 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10805 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10806 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10807 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10808 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>()))>::type,
10819 t_ARGTYPES_07> : InvokeResult_ImpUtils {
10822 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10823 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10824 myDeclval<t_ARGTYPES_02>(),
10825 myDeclval<t_ARGTYPES_03>(),
10826 myDeclval<t_ARGTYPES_04>(),
10827 myDeclval<t_ARGTYPES_05>(),
10828 myDeclval<t_ARGTYPES_06>(),
10829 myDeclval<t_ARGTYPES_07>())) type;
10833#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
10834template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10835 class t_ARGTYPES_02,
10836 class t_ARGTYPES_03,
10837 class t_ARGTYPES_04,
10838 class t_ARGTYPES_05,
10839 class t_ARGTYPES_06,
10840 class t_ARGTYPES_07,
10841 class t_ARGTYPES_08>
10842struct InvokeResult_MemFuncPtrImpDispatch<
10843 typename
bslmf::VoidType<
10844 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10845 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10846 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10847 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10848 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10849 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10850 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10851 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10852 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10853 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>()))>::type,
10865 t_ARGTYPES_08> : InvokeResult_ImpUtils {
10868 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10869 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10870 myDeclval<t_ARGTYPES_02>(),
10871 myDeclval<t_ARGTYPES_03>(),
10872 myDeclval<t_ARGTYPES_04>(),
10873 myDeclval<t_ARGTYPES_05>(),
10874 myDeclval<t_ARGTYPES_06>(),
10875 myDeclval<t_ARGTYPES_07>(),
10876 myDeclval<t_ARGTYPES_08>())) type;
10880#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
10881template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10882 class t_ARGTYPES_02,
10883 class t_ARGTYPES_03,
10884 class t_ARGTYPES_04,
10885 class t_ARGTYPES_05,
10886 class t_ARGTYPES_06,
10887 class t_ARGTYPES_07,
10888 class t_ARGTYPES_08,
10889 class t_ARGTYPES_09>
10890struct InvokeResult_MemFuncPtrImpDispatch<
10891 typename
bslmf::VoidType<
10892 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10893 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10894 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10895 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10896 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10897 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10898 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10899 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10900 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10901 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10902 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>()))>::type,
10915 t_ARGTYPES_09> : InvokeResult_ImpUtils {
10918 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10919 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10920 myDeclval<t_ARGTYPES_02>(),
10921 myDeclval<t_ARGTYPES_03>(),
10922 myDeclval<t_ARGTYPES_04>(),
10923 myDeclval<t_ARGTYPES_05>(),
10924 myDeclval<t_ARGTYPES_06>(),
10925 myDeclval<t_ARGTYPES_07>(),
10926 myDeclval<t_ARGTYPES_08>(),
10927 myDeclval<t_ARGTYPES_09>())) type;
10931#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
10932template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10933 class t_ARGTYPES_02,
10934 class t_ARGTYPES_03,
10935 class t_ARGTYPES_04,
10936 class t_ARGTYPES_05,
10937 class t_ARGTYPES_06,
10938 class t_ARGTYPES_07,
10939 class t_ARGTYPES_08,
10940 class t_ARGTYPES_09,
10941 class t_ARGTYPES_10>
10942struct InvokeResult_MemFuncPtrImpDispatch<
10943 typename
bslmf::VoidType<
10944 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
10945 InvokeResult_ImpUtils::myDeclval<t_FN>())(
10946 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
10947 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
10948 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
10949 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
10950 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
10951 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
10952 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
10953 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
10954 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
10955 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>()))>::type,
10969 t_ARGTYPES_10> : InvokeResult_ImpUtils {
10972 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
10973 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
10974 myDeclval<t_ARGTYPES_02>(),
10975 myDeclval<t_ARGTYPES_03>(),
10976 myDeclval<t_ARGTYPES_04>(),
10977 myDeclval<t_ARGTYPES_05>(),
10978 myDeclval<t_ARGTYPES_06>(),
10979 myDeclval<t_ARGTYPES_07>(),
10980 myDeclval<t_ARGTYPES_08>(),
10981 myDeclval<t_ARGTYPES_09>(),
10982 myDeclval<t_ARGTYPES_10>())) type;
10986#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
10987template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
10988 class t_ARGTYPES_02,
10989 class t_ARGTYPES_03,
10990 class t_ARGTYPES_04,
10991 class t_ARGTYPES_05,
10992 class t_ARGTYPES_06,
10993 class t_ARGTYPES_07,
10994 class t_ARGTYPES_08,
10995 class t_ARGTYPES_09,
10996 class t_ARGTYPES_10,
10997 class t_ARGTYPES_11>
10998struct InvokeResult_MemFuncPtrImpDispatch<
10999 typename
bslmf::VoidType<
11000 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
11001 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11002 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
11003 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
11004 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
11005 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
11006 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
11007 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
11008 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
11009 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
11010 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
11011 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
11012 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>()))>::type,
11027 t_ARGTYPES_11> : InvokeResult_ImpUtils {
11030 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
11031 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
11032 myDeclval<t_ARGTYPES_02>(),
11033 myDeclval<t_ARGTYPES_03>(),
11034 myDeclval<t_ARGTYPES_04>(),
11035 myDeclval<t_ARGTYPES_05>(),
11036 myDeclval<t_ARGTYPES_06>(),
11037 myDeclval<t_ARGTYPES_07>(),
11038 myDeclval<t_ARGTYPES_08>(),
11039 myDeclval<t_ARGTYPES_09>(),
11040 myDeclval<t_ARGTYPES_10>(),
11041 myDeclval<t_ARGTYPES_11>())) type;
11045#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
11046template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
11047 class t_ARGTYPES_02,
11048 class t_ARGTYPES_03,
11049 class t_ARGTYPES_04,
11050 class t_ARGTYPES_05,
11051 class t_ARGTYPES_06,
11052 class t_ARGTYPES_07,
11053 class t_ARGTYPES_08,
11054 class t_ARGTYPES_09,
11055 class t_ARGTYPES_10,
11056 class t_ARGTYPES_11,
11057 class t_ARGTYPES_12>
11058struct InvokeResult_MemFuncPtrImpDispatch<
11059 typename
bslmf::VoidType<
11060 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
11061 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11062 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
11063 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
11064 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
11065 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
11066 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
11067 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
11068 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
11069 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
11070 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
11071 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
11072 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
11073 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>()))>::type,
11089 t_ARGTYPES_12> : InvokeResult_ImpUtils {
11092 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
11093 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
11094 myDeclval<t_ARGTYPES_02>(),
11095 myDeclval<t_ARGTYPES_03>(),
11096 myDeclval<t_ARGTYPES_04>(),
11097 myDeclval<t_ARGTYPES_05>(),
11098 myDeclval<t_ARGTYPES_06>(),
11099 myDeclval<t_ARGTYPES_07>(),
11100 myDeclval<t_ARGTYPES_08>(),
11101 myDeclval<t_ARGTYPES_09>(),
11102 myDeclval<t_ARGTYPES_10>(),
11103 myDeclval<t_ARGTYPES_11>(),
11104 myDeclval<t_ARGTYPES_12>())) type;
11108#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
11109template <
class t_FN,
class t_ARG1TYPE,
class t_ARGTYPES_01,
11110 class t_ARGTYPES_02,
11111 class t_ARGTYPES_03,
11112 class t_ARGTYPES_04,
11113 class t_ARGTYPES_05,
11114 class t_ARGTYPES_06,
11115 class t_ARGTYPES_07,
11116 class t_ARGTYPES_08,
11117 class t_ARGTYPES_09,
11118 class t_ARGTYPES_10,
11119 class t_ARGTYPES_11,
11120 class t_ARGTYPES_12,
11121 class t_ARGTYPES_13>
11122struct InvokeResult_MemFuncPtrImpDispatch<
11123 typename
bslmf::VoidType<
11124 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
11125 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11126 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_01>(),
11127 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_02>(),
11128 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_03>(),
11129 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_04>(),
11130 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_05>(),
11131 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_06>(),
11132 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_07>(),
11133 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_08>(),
11134 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_09>(),
11135 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_10>(),
11136 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_11>(),
11137 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_12>(),
11138 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES_13>()))>::type,
11155 t_ARGTYPES_13> : InvokeResult_ImpUtils {
11158 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
11159 myDeclval<t_FN>())(myDeclval<t_ARGTYPES_01>(),
11160 myDeclval<t_ARGTYPES_02>(),
11161 myDeclval<t_ARGTYPES_03>(),
11162 myDeclval<t_ARGTYPES_04>(),
11163 myDeclval<t_ARGTYPES_05>(),
11164 myDeclval<t_ARGTYPES_06>(),
11165 myDeclval<t_ARGTYPES_07>(),
11166 myDeclval<t_ARGTYPES_08>(),
11167 myDeclval<t_ARGTYPES_09>(),
11168 myDeclval<t_ARGTYPES_10>(),
11169 myDeclval<t_ARGTYPES_11>(),
11170 myDeclval<t_ARGTYPES_12>(),
11171 myDeclval<t_ARGTYPES_13>())) type;
11179#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11180template <
class t_VOID_TYPE,
11181 bool t_ARG_DERIVES_FROM_CLASS,
11182 bool t_ARG_IS_REFERENCE_WRAPPER,
11185struct InvokeResult_MemObjPtrImpDispatch;
11188#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
11189template <
class t_FN>
11190struct InvokeResult_MemObjPtrImp<t_FN> {
11194#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
11195template <
class t_FN,
class t_ARGTYPES_01>
11196struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01> {
11200#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
11201template <
class t_FN,
class t_ARGTYPES_01,
11202 class t_ARGTYPES_02>
11203struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11208#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
11209template <
class t_FN,
class t_ARGTYPES_01,
11210 class t_ARGTYPES_02,
11211 class t_ARGTYPES_03>
11212struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11218#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
11219template <
class t_FN,
class t_ARGTYPES_01,
11220 class t_ARGTYPES_02,
11221 class t_ARGTYPES_03,
11222 class t_ARGTYPES_04>
11223struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11230#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
11231template <
class t_FN,
class t_ARGTYPES_01,
11232 class t_ARGTYPES_02,
11233 class t_ARGTYPES_03,
11234 class t_ARGTYPES_04,
11235 class t_ARGTYPES_05>
11236struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11244#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
11245template <
class t_FN,
class t_ARGTYPES_01,
11246 class t_ARGTYPES_02,
11247 class t_ARGTYPES_03,
11248 class t_ARGTYPES_04,
11249 class t_ARGTYPES_05,
11250 class t_ARGTYPES_06>
11251struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11260#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
11261template <
class t_FN,
class t_ARGTYPES_01,
11262 class t_ARGTYPES_02,
11263 class t_ARGTYPES_03,
11264 class t_ARGTYPES_04,
11265 class t_ARGTYPES_05,
11266 class t_ARGTYPES_06,
11267 class t_ARGTYPES_07>
11268struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11278#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
11279template <
class t_FN,
class t_ARGTYPES_01,
11280 class t_ARGTYPES_02,
11281 class t_ARGTYPES_03,
11282 class t_ARGTYPES_04,
11283 class t_ARGTYPES_05,
11284 class t_ARGTYPES_06,
11285 class t_ARGTYPES_07,
11286 class t_ARGTYPES_08>
11287struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11298#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
11299template <
class t_FN,
class t_ARGTYPES_01,
11300 class t_ARGTYPES_02,
11301 class t_ARGTYPES_03,
11302 class t_ARGTYPES_04,
11303 class t_ARGTYPES_05,
11304 class t_ARGTYPES_06,
11305 class t_ARGTYPES_07,
11306 class t_ARGTYPES_08,
11307 class t_ARGTYPES_09>
11308struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11320#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
11321template <
class t_FN,
class t_ARGTYPES_01,
11322 class t_ARGTYPES_02,
11323 class t_ARGTYPES_03,
11324 class t_ARGTYPES_04,
11325 class t_ARGTYPES_05,
11326 class t_ARGTYPES_06,
11327 class t_ARGTYPES_07,
11328 class t_ARGTYPES_08,
11329 class t_ARGTYPES_09,
11330 class t_ARGTYPES_10>
11331struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11344#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
11345template <
class t_FN,
class t_ARGTYPES_01,
11346 class t_ARGTYPES_02,
11347 class t_ARGTYPES_03,
11348 class t_ARGTYPES_04,
11349 class t_ARGTYPES_05,
11350 class t_ARGTYPES_06,
11351 class t_ARGTYPES_07,
11352 class t_ARGTYPES_08,
11353 class t_ARGTYPES_09,
11354 class t_ARGTYPES_10,
11355 class t_ARGTYPES_11>
11356struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11370#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
11371template <
class t_FN,
class t_ARGTYPES_01,
11372 class t_ARGTYPES_02,
11373 class t_ARGTYPES_03,
11374 class t_ARGTYPES_04,
11375 class t_ARGTYPES_05,
11376 class t_ARGTYPES_06,
11377 class t_ARGTYPES_07,
11378 class t_ARGTYPES_08,
11379 class t_ARGTYPES_09,
11380 class t_ARGTYPES_10,
11381 class t_ARGTYPES_11,
11382 class t_ARGTYPES_12>
11383struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11398#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
11399template <
class t_FN,
class t_ARGTYPES_01,
11400 class t_ARGTYPES_02,
11401 class t_ARGTYPES_03,
11402 class t_ARGTYPES_04,
11403 class t_ARGTYPES_05,
11404 class t_ARGTYPES_06,
11405 class t_ARGTYPES_07,
11406 class t_ARGTYPES_08,
11407 class t_ARGTYPES_09,
11408 class t_ARGTYPES_10,
11409 class t_ARGTYPES_11,
11410 class t_ARGTYPES_12,
11411 class t_ARGTYPES_13>
11412struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11429template <
class t_FN,
class t_ARGTYPE>
11430struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPE>
11431: InvokeResult_MemObjPtrImpDispatch<
11433 IsAccessibleBaseOf<
11434 typename MemberPointerTraits<t_FN>::ClassType,
11435 typename bsl::remove_reference<t_ARGTYPE>::type>::value,
11436 IsReferenceWrapper<typename bsl::remove_const<
11437 typename bsl::remove_reference<t_ARGTYPE>::type>::type>::value,
11444#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 0
11445template <
class t_FN>
11446struct InvokeResult_MemObjPtrImp<t_FN> {
11450#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 1
11451template <
class t_FN,
class t_ARGTYPES_01>
11452struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01> {
11456#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 2
11457template <
class t_FN,
class t_ARGTYPES_01,
11458 class t_ARGTYPES_02>
11459struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11464#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 3
11465template <
class t_FN,
class t_ARGTYPES_01,
11466 class t_ARGTYPES_02,
11467 class t_ARGTYPES_03>
11468struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11474#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 4
11475template <
class t_FN,
class t_ARGTYPES_01,
11476 class t_ARGTYPES_02,
11477 class t_ARGTYPES_03,
11478 class t_ARGTYPES_04>
11479struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11486#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 5
11487template <
class t_FN,
class t_ARGTYPES_01,
11488 class t_ARGTYPES_02,
11489 class t_ARGTYPES_03,
11490 class t_ARGTYPES_04,
11491 class t_ARGTYPES_05>
11492struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11500#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 6
11501template <
class t_FN,
class t_ARGTYPES_01,
11502 class t_ARGTYPES_02,
11503 class t_ARGTYPES_03,
11504 class t_ARGTYPES_04,
11505 class t_ARGTYPES_05,
11506 class t_ARGTYPES_06>
11507struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11516#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 7
11517template <
class t_FN,
class t_ARGTYPES_01,
11518 class t_ARGTYPES_02,
11519 class t_ARGTYPES_03,
11520 class t_ARGTYPES_04,
11521 class t_ARGTYPES_05,
11522 class t_ARGTYPES_06,
11523 class t_ARGTYPES_07>
11524struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11534#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 8
11535template <
class t_FN,
class t_ARGTYPES_01,
11536 class t_ARGTYPES_02,
11537 class t_ARGTYPES_03,
11538 class t_ARGTYPES_04,
11539 class t_ARGTYPES_05,
11540 class t_ARGTYPES_06,
11541 class t_ARGTYPES_07,
11542 class t_ARGTYPES_08>
11543struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11554#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 9
11555template <
class t_FN,
class t_ARGTYPES_01,
11556 class t_ARGTYPES_02,
11557 class t_ARGTYPES_03,
11558 class t_ARGTYPES_04,
11559 class t_ARGTYPES_05,
11560 class t_ARGTYPES_06,
11561 class t_ARGTYPES_07,
11562 class t_ARGTYPES_08,
11563 class t_ARGTYPES_09>
11564struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11576#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 10
11577template <
class t_FN,
class t_ARGTYPES_01,
11578 class t_ARGTYPES_02,
11579 class t_ARGTYPES_03,
11580 class t_ARGTYPES_04,
11581 class t_ARGTYPES_05,
11582 class t_ARGTYPES_06,
11583 class t_ARGTYPES_07,
11584 class t_ARGTYPES_08,
11585 class t_ARGTYPES_09,
11586 class t_ARGTYPES_10>
11587struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11600#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 11
11601template <
class t_FN,
class t_ARGTYPES_01,
11602 class t_ARGTYPES_02,
11603 class t_ARGTYPES_03,
11604 class t_ARGTYPES_04,
11605 class t_ARGTYPES_05,
11606 class t_ARGTYPES_06,
11607 class t_ARGTYPES_07,
11608 class t_ARGTYPES_08,
11609 class t_ARGTYPES_09,
11610 class t_ARGTYPES_10,
11611 class t_ARGTYPES_11>
11612struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11626#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 12
11627template <
class t_FN,
class t_ARGTYPES_01,
11628 class t_ARGTYPES_02,
11629 class t_ARGTYPES_03,
11630 class t_ARGTYPES_04,
11631 class t_ARGTYPES_05,
11632 class t_ARGTYPES_06,
11633 class t_ARGTYPES_07,
11634 class t_ARGTYPES_08,
11635 class t_ARGTYPES_09,
11636 class t_ARGTYPES_10,
11637 class t_ARGTYPES_11,
11638 class t_ARGTYPES_12>
11639struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11654#if BSLMF_INVOKERESULT_VARIADIC_LIMIT_E >= 13
11655template <
class t_FN,
class t_ARGTYPES_01,
11656 class t_ARGTYPES_02,
11657 class t_ARGTYPES_03,
11658 class t_ARGTYPES_04,
11659 class t_ARGTYPES_05,
11660 class t_ARGTYPES_06,
11661 class t_ARGTYPES_07,
11662 class t_ARGTYPES_08,
11663 class t_ARGTYPES_09,
11664 class t_ARGTYPES_10,
11665 class t_ARGTYPES_11,
11666 class t_ARGTYPES_12,
11667 class t_ARGTYPES_13>
11668struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES_01,
11685template <
class t_CLASS,
class t_RET,
class t_ARGTYPE>
11686struct InvokeResult_MemObjPtrImp<t_RET t_CLASS::*, t_ARGTYPE> {
11689 typedef InvokeResult_MemPtrArgQualifiers<t_CLASS, t_ARGTYPE> ArgQualifiers;
11691 typedef typename InvokeResult_AddCVRef<t_RET,
11692 ArgQualifiers::k_IS_CONST,
11693 ArgQualifiers::k_IS_VOLATILE,
11694 ArgQualifiers::k_IS_LVALUE>::type
11698#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
11700 ArgQualifiers::k_IS_LVALUE,
11702 typename bsl::add_rvalue_reference<cvtype>::type>::type type;
11704 typedef cvtype type;
11710#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11711template <
class t_VOID_TYPE,
11712 bool t_ARG_DERIVES_FROM_CLASS,
11713 bool t_ARG_IS_REFERENCE_WRAPPER,
11716struct InvokeResult_MemObjPtrImpDispatch {
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>().*
11736 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
11740 t_ARGTYPE> : InvokeResult_ImpUtils {
11742 typedef decltype(myDeclval<t_ARGTYPE>().*myDeclval<t_FN>()) type;
11745template <
class t_FN,
class t_ARGTYPE>
11746struct InvokeResult_MemObjPtrImpDispatch<
11747 typename
bslmf::VoidType<
11748 decltype(InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>().get().*
11749 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
11753 t_ARGTYPE> : InvokeResult_ImpUtils {
11755 typedef decltype(myDeclval<t_ARGTYPE>().get().*myDeclval<t_FN>()) type;
11763template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11764struct InvokeResult_FunctorImp;
11766template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11767struct InvokeResult_FuncPtrImp;
11769template <
class t_FN,
class... t_ARGTYPES>
11770struct InvokeResult_MemFuncPtrImp;
11772template <
class t_FN,
class... t_ARGTYPES>
11773struct InvokeResult_MemObjPtrImp;
11776template <
bool t_IS_FUNCPTR,
11777 bool t_IS_MEMFUNCPTR,
11778 bool t_IS_MEMOBJPTR,
11780 class... t_ARGTYPES>
11781struct InvokeResult_Imp : InvokeResult_FunctorImp<void, t_FN, t_ARGTYPES...> {
11784template <
class t_FN,
class... t_ARGTYPES>
11785struct InvokeResult_Imp<true ,
11790: InvokeResult_FuncPtrImp<void, t_FN, t_ARGTYPES...> {
11793template <
class t_FN,
class... t_ARGTYPES>
11794struct InvokeResult_Imp<false,
11799: InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES...> {
11802template <
class t_FN,
class... t_ARGTYPES>
11803struct InvokeResult_Imp<false,
11808: InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPES...> {
11812#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11813template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11814struct InvokeResult_FunctorImp {
11817template <
class t_FN,
class... t_ARGTYPES>
11818struct InvokeResult_FunctorImp<
11819 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
11820 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11822 t_ARGTYPES...> : InvokeResult_ImpUtils {
11825 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)) type;
11828template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11829struct InvokeResult_FunctorImp : InvokeResult_ImpUtils {
11833 myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...),
11834 InvokeResult_VoidChecker()))
11837 typedef typename InvokeResult_FunctorDeduction<k_IS_VOID,
11839 t_ARGTYPES...>::type type;
11844#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11845template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11846struct InvokeResult_FuncPtrImp {
11849template <
class t_FN,
class... t_ARGTYPES>
11850struct InvokeResult_FuncPtrImp<
11851 typename
bslmf::VoidType<decltype(InvokeResult_ImpUtils::myDeclval<t_FN>()(
11852 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11854 t_ARGTYPES...> : InvokeResult_ImpUtils {
11857 typedef decltype(myDeclval<t_FN>()(myDeclval<t_ARGTYPES>()...)) type;
11860template <
class t_VOID_TYPE,
class t_FN,
class... t_ARGTYPES>
11861struct InvokeResult_FuncPtrImp {
11873#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11874template <
class t_VOID_TYPE,
11875 bool t_ARG1_DERIVES_FROM_CLASS,
11876 bool t_ARG1_IS_REFERENCE_WRAPPER,
11879 class... t_ARGTYPES>
11880struct InvokeResult_MemFuncPtrImpDispatch;
11883template <
class t_FN>
11884struct InvokeResult_MemFuncPtrImp<t_FN> {
11887template <
class t_FN,
class t_ARG1TYPE,
class... t_ARGTYPES>
11888struct InvokeResult_MemFuncPtrImp<t_FN, t_ARG1TYPE, t_ARGTYPES...>
11889: InvokeResult_MemFuncPtrImpDispatch<
11891 IsAccessibleBaseOf<
11892 typename MemberFunctionPointerTraits<t_FN>::ClassType,
11893 typename bsl::remove_reference<t_ARG1TYPE>::type>::value,
11894 IsReferenceWrapper<typename bsl::remove_const<
11895 typename bsl::remove_reference<t_ARG1TYPE>::type>::type>::value,
11901template <
class t_FN,
class... t_ARGTYPES>
11902struct InvokeResult_MemFuncPtrImp<t_FN, t_ARGTYPES...> {
11904 typedef typename MemberFunctionPointerTraits<t_FN>::ResultType QType;
11914#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11915template <
class t_VOID_TYPE,
11916 bool t_ARG1_DERIVES_FROM_CLASS,
11917 bool t_ARG1_IS_REFERENCE_WRAPPER,
11920 class... t_ARGTYPES>
11921struct InvokeResult_MemFuncPtrImpDispatch {
11924template <
class t_FN,
class t_ARG1TYPE,
class... t_ARGTYPES>
11925struct InvokeResult_MemFuncPtrImpDispatch<
11926 typename
bslmf::VoidType<
11927 decltype(((*InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>()).*
11928 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11929 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11934 t_ARGTYPES...> : InvokeResult_ImpUtils {
11937 typedef decltype(((*myDeclval<t_ARG1TYPE>()).*
11938 myDeclval<t_FN>())(myDeclval<t_ARGTYPES>()...)) type;
11941template <
class t_FN,
class t_ARG1TYPE,
class... t_ARGTYPES>
11942struct InvokeResult_MemFuncPtrImpDispatch<
11943 typename
bslmf::VoidType<
11944 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().*
11945 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11946 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11951 t_ARGTYPES...> : InvokeResult_ImpUtils {
11954 typedef decltype((myDeclval<t_ARG1TYPE>().*
11955 myDeclval<t_FN>())(myDeclval<t_ARGTYPES>()...)) type;
11958template <
class t_FN,
class t_ARG1TYPE,
class... t_ARGTYPES>
11959struct InvokeResult_MemFuncPtrImpDispatch<
11960 typename
bslmf::VoidType<
11961 decltype((InvokeResult_ImpUtils::myDeclval<t_ARG1TYPE>().get().*
11962 InvokeResult_ImpUtils::myDeclval<t_FN>())(
11963 InvokeResult_ImpUtils::myDeclval<t_ARGTYPES>()...))>::type,
11968 t_ARGTYPES...> : InvokeResult_ImpUtils {
11971 typedef decltype((myDeclval<t_ARG1TYPE>().get().*
11972 myDeclval<t_FN>())(myDeclval<t_ARGTYPES>()...)) type;
11978#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
11979template <
class t_VOID_TYPE,
11980 bool t_ARG_DERIVES_FROM_CLASS,
11981 bool t_ARG_IS_REFERENCE_WRAPPER,
11984struct InvokeResult_MemObjPtrImpDispatch;
11987template <
class t_FN,
class... t_ARGTYPES>
11988struct InvokeResult_MemObjPtrImp {
11991template <
class t_FN,
class t_ARGTYPE>
11992struct InvokeResult_MemObjPtrImp<t_FN, t_ARGTYPE>
11993: InvokeResult_MemObjPtrImpDispatch<
11995 IsAccessibleBaseOf<
11996 typename MemberPointerTraits<t_FN>::ClassType,
11997 typename bsl::remove_reference<t_ARGTYPE>::type>::value,
11998 IsReferenceWrapper<typename bsl::remove_const<
11999 typename bsl::remove_reference<t_ARGTYPE>::type>::type>::value,
12006template <
class t_FN,
class... t_ARGTYPES>
12007struct InvokeResult_MemObjPtrImp {
12010template <
class t_CLASS,
class t_RET,
class t_ARGTYPE>
12011struct InvokeResult_MemObjPtrImp<t_RET t_CLASS::*, t_ARGTYPE> {
12014 typedef InvokeResult_MemPtrArgQualifiers<t_CLASS, t_ARGTYPE> ArgQualifiers;
12016 typedef typename InvokeResult_AddCVRef<t_RET,
12017 ArgQualifiers::k_IS_CONST,
12018 ArgQualifiers::k_IS_VOLATILE,
12019 ArgQualifiers::k_IS_LVALUE>::type
12023#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
12025 ArgQualifiers::k_IS_LVALUE,
12027 typename bsl::add_rvalue_reference<cvtype>::type>::type type;
12029 typedef cvtype type;
12035#ifdef BSLMF_INVOKERESULT_SUPPORT_CPP17_SEMANTICS
12036template <
class t_VOID_TYPE,
12037 bool t_ARG_DERIVES_FROM_CLASS,
12038 bool t_ARG_IS_REFERENCE_WRAPPER,
12041struct InvokeResult_MemObjPtrImpDispatch {
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>().*
12061 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
12065 t_ARGTYPE> : InvokeResult_ImpUtils {
12067 typedef decltype(myDeclval<t_ARGTYPE>().*myDeclval<t_FN>()) type;
12070template <
class t_FN,
class t_ARGTYPE>
12071struct InvokeResult_MemObjPtrImpDispatch<
12072 typename
bslmf::VoidType<
12073 decltype(InvokeResult_ImpUtils::myDeclval<t_ARGTYPE>().get().*
12074 InvokeResult_ImpUtils::myDeclval<t_FN>())>::type,
12078 t_ARGTYPE> : InvokeResult_ImpUtils {
12080 typedef decltype(myDeclval<t_ARGTYPE>().get().*myDeclval<t_FN>()) type;
12092# error Not valid except when included from bslmf_invokeresult.h
decay_imp< U, k_ISARRAY, k_ISFUNC >::type type
Definition bslmf_decay.h:167
#define BSLMF_TAG_TO_INT(BSLMF_EXPR)
Definition bslmf_tag.h:179
Definition bdlat_valuetypefunctions.h:939
BloombergLP::bsls::Nullptr_Impl::Type nullptr_t
Definition bsls_nullptr.h:283
Definition bdlbb_blob.h:579
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:176
t_TYPE & type
This typedef defines the return type of this meta function.
Definition bslmf_addlvaluereference.h:131
BloombergLP::bslmf::AddPointer_Impl< t_TYPE >::type type
Definition bslmf_addpointer.h:181
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:178
Definition bslmf_conditional.h:123
Definition bslmf_enableif.h:530
Definition bslmf_isclass.h:164
Definition bslmf_isconst.h:145
Definition bslmf_isconvertible.h:875
Definition bslmf_islvaluereference.h:135
Definition bslmf_ismemberobjectpointer.h:141
Definition bslmf_isreference.h:137
Definition bslmf_isrvaluereference.h:126
Definition bslmf_isvolatile.h:145
remove_const< typenameremove_volatile< t_TYPE >::type >::type type
Definition bslmf_removecv.h:128
t_TYPE type
This typedef is an alias to the (template parameter) t_TYPE.
Definition bslmf_removereference.h:156
Definition bslmf_functionpointertraits.h:147
InvokeResultDeductionFailed(const t_TYPE &)
Definition bslmf_invokeresult.h:319
BloombergLP::bslmf::InvokeResult_Imp< k_IS_FUNCPTR, k_IS_MEMFUNCPTR, k_IS_MEMOBJPTR, FwdFn, t_ARGTYPES... > BaseType
Definition bslmf_invokeresult.h:460
AnyLvalue(volatile t_TP &)
(Declared but not defined) Convert from any lvalue argument.
t_FALLBACK type
Definition bslmf_resulttype.h:262
Definition bslmf_tag.h:166