8#ifndef INCLUDED_BSLMF_MEMBERFUNCTIONPOINTERTRAITS
9#define INCLUDED_BSLMF_MEMBERFUNCTIONPOINTERTRAITS
122#include <bslscm_version.h>
136template <
class t_PROTOTYPE,
class t_TEST_PROTOTYPE>
137struct MemberFunctionPointerTraits_Imp;
146template <
class t_PROTOTYPE>
149 typename bsl::remove_cv<t_PROTOTYPE>::type,
150 typename bsl::remove_cv<t_PROTOTYPE>::type> {
160template <
class t_PROTOTYPE>
164 MemberFunctionPointerTraits<t_PROTOTYPE>::IS_MEMBER_FUNCTION_PTR> {
173#if defined(BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS) && \
174 !defined(BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES)
180# error Feature not supported for compilers without variadic templates
183#if defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES) && \
184 !defined(BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES)
188# error Feature not supported for compilers without variadic templates
195#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
206template <
class t_PROTOTYPE,
207 class t_BSLMF_RETURN,
215 typedef Tag<3> ConstVolTag;
216#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES && \
217 defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES)
218 typedef Tag<4> NonCVNoExceptTag;
220 typedef Tag<5> ConstNoExceptTag;
221 typedef Tag<6> VolNoExceptTag;
222 typedef Tag<7> ConstVolNoExceptTag;
225 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...));
226 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
const);
227 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
volatile);
228 static ConstVolTag test(
229 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
const volatile);
230#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES && \
231 defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES)
232 static NonCVNoExceptTag test(
233 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
noexcept);
234 static ConstNoExceptTag test(
235 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
const noexcept);
236 static VolNoExceptTag test(
237 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
volatile noexcept);
238 static ConstVolNoExceptTag test(t_BSLMF_RETURN(t_TYPE::*)(t_ARGS...)
239 const volatile noexcept);
257#elif BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
262#ifndef BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT
263#define BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT 14
265#ifndef BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A
266#define BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A \
267 BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT
269template <
class t_PROTOTYPE,
270 class t_BSLMF_RETURN,
272#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 0
274 class t_ARGS_0 = BSLS_COMPILERFEATURES_NILT
277#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 1
279 class t_ARGS_1 = BSLS_COMPILERFEATURES_NILT
282#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 2
284 class t_ARGS_2 = BSLS_COMPILERFEATURES_NILT
287#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 3
289 class t_ARGS_3 = BSLS_COMPILERFEATURES_NILT
292#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 4
294 class t_ARGS_4 = BSLS_COMPILERFEATURES_NILT
297#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 5
299 class t_ARGS_5 = BSLS_COMPILERFEATURES_NILT
302#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 6
304 class t_ARGS_6 = BSLS_COMPILERFEATURES_NILT
307#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 7
309 class t_ARGS_7 = BSLS_COMPILERFEATURES_NILT
312#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 8
314 class t_ARGS_8 = BSLS_COMPILERFEATURES_NILT
317#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 9
319 class t_ARGS_9 = BSLS_COMPILERFEATURES_NILT
322#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 10
324 class t_ARGS_10 = BSLS_COMPILERFEATURES_NILT
327#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 11
329 class t_ARGS_11 = BSLS_COMPILERFEATURES_NILT
332#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 12
334 class t_ARGS_12 = BSLS_COMPILERFEATURES_NILT
337#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 13
339 class t_ARGS_13 = BSLS_COMPILERFEATURES_NILT
342 class = BSLS_COMPILERFEATURES_NILT>
345#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 0
346template <
class t_PROTOTYPE,
class t_BSLMF_RETURN,
class t_TYPE>
353 typedef Tag<3> ConstVolTag;
355 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)());
356 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)() const);
357 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)() volatile);
358 static ConstVolTag test(t_BSLMF_RETURN(t_TYPE::*)() const volatile);
372#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 1
373template <
class t_PROTOTYPE,
374 class t_BSLMF_RETURN,
377class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
381 typedef Tag<0> NonCVTag;
382 typedef Tag<1> ConstTag;
383 typedef Tag<2> VolTag;
384 typedef Tag<3> ConstVolTag;
386 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01));
387 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01) const);
388 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01) volatile);
389 static ConstVolTag test(
390 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01) const volatile);
404#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 2
405template <
class t_PROTOTYPE,
406 class t_BSLMF_RETURN,
410class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
415 typedef Tag<0> NonCVTag;
416 typedef Tag<1> ConstTag;
417 typedef Tag<2> VolTag;
418 typedef Tag<3> ConstVolTag;
420 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02));
421 static ConstTag test(
422 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02) const);
424 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02) volatile);
425 static ConstVolTag test(
426 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02) const volatile);
440#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 3
441template <
class t_PROTOTYPE,
442 class t_BSLMF_RETURN,
447class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
453 typedef Tag<0> NonCVTag;
454 typedef Tag<1> ConstTag;
455 typedef Tag<2> VolTag;
456 typedef Tag<3> ConstVolTag;
458 static NonCVTag test(
459 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03));
460 static ConstTag test(
461 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03) const);
463 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03) volatile);
465 test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03)
480#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 4
481template <
class t_PROTOTYPE,
482 class t_BSLMF_RETURN,
488class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
495 typedef Tag<0> NonCVTag;
496 typedef Tag<1> ConstTag;
497 typedef Tag<2> VolTag;
498 typedef Tag<3> ConstVolTag;
500 static NonCVTag test(
501 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04));
503 test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04)
505 static VolTag test(t_BSLMF_RETURN (
506 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04) volatile);
508 test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04)
523#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 5
524template <
class t_PROTOTYPE,
525 class t_BSLMF_RETURN,
532class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
540 typedef Tag<0> NonCVTag;
541 typedef Tag<1> ConstTag;
542 typedef Tag<2> VolTag;
543 typedef Tag<3> ConstVolTag;
545 static NonCVTag test(t_BSLMF_RETURN (
546 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05));
547 static ConstTag test(t_BSLMF_RETURN (
548 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05)
550 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
554 t_ARGS_05) volatile);
555 static ConstVolTag test(t_BSLMF_RETURN (
556 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05)
571#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 6
572template <
class t_PROTOTYPE,
573 class t_BSLMF_RETURN,
581class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
590 typedef Tag<0> NonCVTag;
591 typedef Tag<1> ConstTag;
592 typedef Tag<2> VolTag;
593 typedef Tag<3> ConstVolTag;
595 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
601 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
607 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
612 t_ARGS_06) volatile);
613 static ConstVolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
633#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 7
634template <
class t_PROTOTYPE,
635 class t_BSLMF_RETURN,
644class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
654 typedef Tag<0> NonCVTag;
655 typedef Tag<1> ConstTag;
656 typedef Tag<2> VolTag;
657 typedef Tag<3> ConstVolTag;
659 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
666 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
673 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
679 t_ARGS_07) volatile);
680 static ConstVolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
701#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 8
702template <
class t_PROTOTYPE,
703 class t_BSLMF_RETURN,
713class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
724 typedef Tag<0> NonCVTag;
725 typedef Tag<1> ConstTag;
726 typedef Tag<2> VolTag;
727 typedef Tag<3> ConstVolTag;
729 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
737 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
745 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
752 t_ARGS_08) volatile);
753 static ConstVolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
775#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 9
776template <
class t_PROTOTYPE,
777 class t_BSLMF_RETURN,
788class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
800 typedef Tag<0> NonCVTag;
801 typedef Tag<1> ConstTag;
802 typedef Tag<2> VolTag;
803 typedef Tag<3> ConstVolTag;
805 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
814 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
823 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
831 t_ARGS_09) volatile);
832 static ConstVolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
855#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 10
856template <
class t_PROTOTYPE,
857 class t_BSLMF_RETURN,
869class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
882 typedef Tag<0> NonCVTag;
883 typedef Tag<1> ConstTag;
884 typedef Tag<2> VolTag;
885 typedef Tag<3> ConstVolTag;
887 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
897 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
907 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
916 t_ARGS_10) volatile);
917 static ConstVolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
941#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 11
942template <
class t_PROTOTYPE,
943 class t_BSLMF_RETURN,
956class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
970 typedef Tag<0> NonCVTag;
971 typedef Tag<1> ConstTag;
972 typedef Tag<2> VolTag;
973 typedef Tag<3> ConstVolTag;
975 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
986 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
997 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1007 t_ARGS_11) volatile);
1008 static ConstVolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1033#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 12
1034template <
class t_PROTOTYPE,
1035 class t_BSLMF_RETURN,
1049class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1064 typedef Tag<0> NonCVTag;
1065 typedef Tag<1> ConstTag;
1066 typedef Tag<2> VolTag;
1067 typedef Tag<3> ConstVolTag;
1069 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1081 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1093 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1104 t_ARGS_12) volatile);
1105 static ConstVolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1131#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 13
1132template <
class t_PROTOTYPE,
1133 class t_BSLMF_RETURN,
1148class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1164 typedef Tag<0> NonCVTag;
1165 typedef Tag<1> ConstTag;
1166 typedef Tag<2> VolTag;
1167 typedef Tag<3> ConstVolTag;
1169 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1182 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1195 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1207 t_ARGS_13) volatile);
1208 static ConstVolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1235#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 14
1236template <
class t_PROTOTYPE,
1237 class t_BSLMF_RETURN,
1253class MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1270 typedef Tag<0> NonCVTag;
1271 typedef Tag<1> ConstTag;
1272 typedef Tag<2> VolTag;
1273 typedef Tag<3> ConstVolTag;
1275 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1289 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1303 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1316 t_ARGS_14) volatile);
1317 static ConstVolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1348template <
class t_PROTOTYPE,
1349 class t_BSLMF_RETURN,
1352class MemberFunctionPointerTraits_ClassType {
1353 typedef Tag<0> NonCVTag;
1354 typedef Tag<1> ConstTag;
1355 typedef Tag<2> VolTag;
1356 typedef Tag<3> ConstVolTag;
1358 static NonCVTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...));
1359 static ConstTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const);
1360 static VolTag test(t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile);
1361 static ConstVolTag test(
1362 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const volatile);
1391template <
class t_PROTOTYPE,
class t_TEST_PROTOTYPE>
1400#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1405template <
class t_PROTOTYPE,
1406 class t_BSLMF_RETURN,
1410 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)> {
1414 IS_LVALREF_QUALIFIED = 0,
1415 IS_RVALREF_QUALIFIED = 0,
1430template <
class t_PROTOTYPE,
1431 class t_BSLMF_RETURN,
1435 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
1440 IS_LVALREF_QUALIFIED = 0,
1441 IS_RVALREF_QUALIFIED = 0,
1456template <
class t_PROTOTYPE,
1457 class t_BSLMF_RETURN,
1462 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile> {
1466 IS_LVALREF_QUALIFIED = 0,
1467 IS_RVALREF_QUALIFIED = 0,
1483template <
class t_PROTOTYPE,
1484 class t_BSLMF_RETURN,
1488 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
1493 IS_LVALREF_QUALIFIED = 0,
1494 IS_RVALREF_QUALIFIED = 0,
1506#elif BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1511#ifndef BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT
1512#define BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT 14
1514#ifndef BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B
1515#define BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B \
1516 BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT
1518#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 0
1519template <
class t_PROTOTYPE,
class t_BSLMF_RETURN,
class t_TYPE>
1521 t_BSLMF_RETURN (t_TYPE::*)()> {
1524 IS_LVALREF_QUALIFIED = 0,
1525 IS_RVALREF_QUALIFIED = 0,
1529 typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1531 t_TYPE>::Type ClassType;
1532 typedef t_BSLMF_RETURN ResultType;
1537#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 1
1538template <
class t_PROTOTYPE,
1539 class t_BSLMF_RETURN,
1542struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1543 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01)> {
1546 IS_LVALREF_QUALIFIED = 0,
1547 IS_RVALREF_QUALIFIED = 0,
1550 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1555 typedef t_BSLMF_RETURN ResultType;
1560#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 2
1561template <
class t_PROTOTYPE,
1562 class t_BSLMF_RETURN,
1566struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1567 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1571 IS_LVALREF_QUALIFIED = 0,
1572 IS_RVALREF_QUALIFIED = 0,
1575 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1581 typedef t_BSLMF_RETURN ResultType;
1582 typedef typename TypeList<t_ARGS_01,
1583 t_ARGS_02>::Type ArgumentList;
1587#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 3
1588template <
class t_PROTOTYPE,
1589 class t_BSLMF_RETURN,
1594struct MemberFunctionPointerTraits_Imp<
1596 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03)> {
1599 IS_LVALREF_QUALIFIED = 0,
1600 IS_RVALREF_QUALIFIED = 0,
1603 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1610 typedef t_BSLMF_RETURN ResultType;
1611 typedef typename TypeList<t_ARGS_01,
1613 t_ARGS_03>::Type ArgumentList;
1617#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 4
1618template <
class t_PROTOTYPE,
1619 class t_BSLMF_RETURN,
1625struct MemberFunctionPointerTraits_Imp<
1627 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04)> {
1630 IS_LVALREF_QUALIFIED = 0,
1631 IS_RVALREF_QUALIFIED = 0,
1634 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1642 typedef t_BSLMF_RETURN ResultType;
1643 typedef typename TypeList<t_ARGS_01,
1646 t_ARGS_04>::Type ArgumentList;
1650#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 5
1651template <
class t_PROTOTYPE,
1652 class t_BSLMF_RETURN,
1659struct MemberFunctionPointerTraits_Imp<
1662 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05)> {
1665 IS_LVALREF_QUALIFIED = 0,
1666 IS_RVALREF_QUALIFIED = 0,
1669 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1678 typedef t_BSLMF_RETURN ResultType;
1679 typedef typename TypeList<t_ARGS_01,
1683 t_ARGS_05>::Type ArgumentList;
1687#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 6
1688template <
class t_PROTOTYPE,
1689 class t_BSLMF_RETURN,
1697struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1698 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1706 IS_LVALREF_QUALIFIED = 0,
1707 IS_RVALREF_QUALIFIED = 0,
1710 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1720 typedef t_BSLMF_RETURN ResultType;
1721 typedef typename TypeList<t_ARGS_01,
1726 t_ARGS_06>::Type ArgumentList;
1730#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 7
1731template <
class t_PROTOTYPE,
1732 class t_BSLMF_RETURN,
1741struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1742 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1751 IS_LVALREF_QUALIFIED = 0,
1752 IS_RVALREF_QUALIFIED = 0,
1755 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1766 typedef t_BSLMF_RETURN ResultType;
1767 typedef typename TypeList<t_ARGS_01,
1773 t_ARGS_07>::Type ArgumentList;
1777#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 8
1778template <
class t_PROTOTYPE,
1779 class t_BSLMF_RETURN,
1789struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1790 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1800 IS_LVALREF_QUALIFIED = 0,
1801 IS_RVALREF_QUALIFIED = 0,
1804 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1816 typedef t_BSLMF_RETURN ResultType;
1817 typedef typename TypeList<t_ARGS_01,
1824 t_ARGS_08>::Type ArgumentList;
1828#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 9
1829template <
class t_PROTOTYPE,
1830 class t_BSLMF_RETURN,
1841struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1842 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1853 IS_LVALREF_QUALIFIED = 0,
1854 IS_RVALREF_QUALIFIED = 0,
1857 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1870 typedef t_BSLMF_RETURN ResultType;
1871 typedef typename TypeList<t_ARGS_01,
1879 t_ARGS_09>::Type ArgumentList;
1883#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 10
1884template <
class t_PROTOTYPE,
1885 class t_BSLMF_RETURN,
1897struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1898 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1910 IS_LVALREF_QUALIFIED = 0,
1911 IS_RVALREF_QUALIFIED = 0,
1914 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1928 typedef t_BSLMF_RETURN ResultType;
1929 typedef typename TypeList<t_ARGS_01,
1938 t_ARGS_10>::Type ArgumentList;
1942#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 11
1943template <
class t_PROTOTYPE,
1944 class t_BSLMF_RETURN,
1957struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1958 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1971 IS_LVALREF_QUALIFIED = 0,
1972 IS_RVALREF_QUALIFIED = 0,
1975 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1990 typedef t_BSLMF_RETURN ResultType;
1991 typedef typename TypeList<t_ARGS_01,
2001 t_ARGS_11>::Type ArgumentList;
2005#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 12
2006template <
class t_PROTOTYPE,
2007 class t_BSLMF_RETURN,
2021struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2022 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2036 IS_LVALREF_QUALIFIED = 0,
2037 IS_RVALREF_QUALIFIED = 0,
2040 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2056 typedef t_BSLMF_RETURN ResultType;
2057 typedef typename TypeList<t_ARGS_01,
2068 t_ARGS_12>::Type ArgumentList;
2072#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 13
2073template <
class t_PROTOTYPE,
2074 class t_BSLMF_RETURN,
2089struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2090 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2105 IS_LVALREF_QUALIFIED = 0,
2106 IS_RVALREF_QUALIFIED = 0,
2109 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2126 typedef t_BSLMF_RETURN ResultType;
2127 typedef typename TypeList<t_ARGS_01,
2139 t_ARGS_13>::Type ArgumentList;
2143#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 14
2144template <
class t_PROTOTYPE,
2145 class t_BSLMF_RETURN,
2161struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2162 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2178 IS_LVALREF_QUALIFIED = 0,
2179 IS_RVALREF_QUALIFIED = 0,
2182 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2200 typedef t_BSLMF_RETURN ResultType;
2201 typedef typename TypeList<t_ARGS_01,
2214 t_ARGS_14>::Type ArgumentList;
2218#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 0
2219template <
class t_PROTOTYPE,
class t_BSLMF_RETURN,
class t_TYPE>
2220struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2221 t_BSLMF_RETURN (t_TYPE::*)() const> {
2224 IS_LVALREF_QUALIFIED = 0,
2225 IS_RVALREF_QUALIFIED = 0,
2229 typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2231 t_TYPE>::Type ClassType;
2232 typedef t_BSLMF_RETURN ResultType;
2237#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 1
2238template <
class t_PROTOTYPE,
2239 class t_BSLMF_RETURN,
2242struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2243 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01)
2247 IS_LVALREF_QUALIFIED = 0,
2248 IS_RVALREF_QUALIFIED = 0,
2251 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2256 typedef t_BSLMF_RETURN ResultType;
2261#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 2
2262template <
class t_PROTOTYPE,
2263 class t_BSLMF_RETURN,
2267struct MemberFunctionPointerTraits_Imp<
2269 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02) const> {
2272 IS_LVALREF_QUALIFIED = 0,
2273 IS_RVALREF_QUALIFIED = 0,
2276 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2282 typedef t_BSLMF_RETURN ResultType;
2283 typedef typename TypeList<t_ARGS_01,
2284 t_ARGS_02>::Type ArgumentList;
2288#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 3
2289template <
class t_PROTOTYPE,
2290 class t_BSLMF_RETURN,
2295struct MemberFunctionPointerTraits_Imp<
2297 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03) const> {
2300 IS_LVALREF_QUALIFIED = 0,
2301 IS_RVALREF_QUALIFIED = 0,
2304 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2311 typedef t_BSLMF_RETURN ResultType;
2312 typedef typename TypeList<t_ARGS_01,
2314 t_ARGS_03>::Type ArgumentList;
2318#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 4
2319template <
class t_PROTOTYPE,
2320 class t_BSLMF_RETURN,
2326struct MemberFunctionPointerTraits_Imp<
2328 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04)
2332 IS_LVALREF_QUALIFIED = 0,
2333 IS_RVALREF_QUALIFIED = 0,
2336 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2344 typedef t_BSLMF_RETURN ResultType;
2345 typedef typename TypeList<t_ARGS_01,
2348 t_ARGS_04>::Type ArgumentList;
2352#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 5
2353template <
class t_PROTOTYPE,
2354 class t_BSLMF_RETURN,
2361struct MemberFunctionPointerTraits_Imp<
2364 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05)
2368 IS_LVALREF_QUALIFIED = 0,
2369 IS_RVALREF_QUALIFIED = 0,
2372 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2381 typedef t_BSLMF_RETURN ResultType;
2382 typedef typename TypeList<t_ARGS_01,
2386 t_ARGS_05>::Type ArgumentList;
2390#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 6
2391template <
class t_PROTOTYPE,
2392 class t_BSLMF_RETURN,
2400struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2401 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2410 IS_LVALREF_QUALIFIED = 0,
2411 IS_RVALREF_QUALIFIED = 0,
2414 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2424 typedef t_BSLMF_RETURN ResultType;
2425 typedef typename TypeList<t_ARGS_01,
2430 t_ARGS_06>::Type ArgumentList;
2434#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 7
2435template <
class t_PROTOTYPE,
2436 class t_BSLMF_RETURN,
2445struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2446 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2456 IS_LVALREF_QUALIFIED = 0,
2457 IS_RVALREF_QUALIFIED = 0,
2460 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2471 typedef t_BSLMF_RETURN ResultType;
2472 typedef typename TypeList<t_ARGS_01,
2478 t_ARGS_07>::Type ArgumentList;
2482#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 8
2483template <
class t_PROTOTYPE,
2484 class t_BSLMF_RETURN,
2494struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2495 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2506 IS_LVALREF_QUALIFIED = 0,
2507 IS_RVALREF_QUALIFIED = 0,
2510 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2522 typedef t_BSLMF_RETURN ResultType;
2523 typedef typename TypeList<t_ARGS_01,
2530 t_ARGS_08>::Type ArgumentList;
2534#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 9
2535template <
class t_PROTOTYPE,
2536 class t_BSLMF_RETURN,
2547struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2548 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2560 IS_LVALREF_QUALIFIED = 0,
2561 IS_RVALREF_QUALIFIED = 0,
2564 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2577 typedef t_BSLMF_RETURN ResultType;
2578 typedef typename TypeList<t_ARGS_01,
2586 t_ARGS_09>::Type ArgumentList;
2590#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 10
2591template <
class t_PROTOTYPE,
2592 class t_BSLMF_RETURN,
2604struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2605 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2618 IS_LVALREF_QUALIFIED = 0,
2619 IS_RVALREF_QUALIFIED = 0,
2622 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2636 typedef t_BSLMF_RETURN ResultType;
2637 typedef typename TypeList<t_ARGS_01,
2646 t_ARGS_10>::Type ArgumentList;
2650#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 11
2651template <
class t_PROTOTYPE,
2652 class t_BSLMF_RETURN,
2665struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2666 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2680 IS_LVALREF_QUALIFIED = 0,
2681 IS_RVALREF_QUALIFIED = 0,
2684 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2699 typedef t_BSLMF_RETURN ResultType;
2700 typedef typename TypeList<t_ARGS_01,
2710 t_ARGS_11>::Type ArgumentList;
2714#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 12
2715template <
class t_PROTOTYPE,
2716 class t_BSLMF_RETURN,
2730struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2731 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2746 IS_LVALREF_QUALIFIED = 0,
2747 IS_RVALREF_QUALIFIED = 0,
2750 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2766 typedef t_BSLMF_RETURN ResultType;
2767 typedef typename TypeList<t_ARGS_01,
2778 t_ARGS_12>::Type ArgumentList;
2782#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 13
2783template <
class t_PROTOTYPE,
2784 class t_BSLMF_RETURN,
2799struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2800 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2816 IS_LVALREF_QUALIFIED = 0,
2817 IS_RVALREF_QUALIFIED = 0,
2820 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2837 typedef t_BSLMF_RETURN ResultType;
2838 typedef typename TypeList<t_ARGS_01,
2850 t_ARGS_13>::Type ArgumentList;
2854#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 14
2855template <
class t_PROTOTYPE,
2856 class t_BSLMF_RETURN,
2872struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2873 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2890 IS_LVALREF_QUALIFIED = 0,
2891 IS_RVALREF_QUALIFIED = 0,
2894 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2912 typedef t_BSLMF_RETURN ResultType;
2913 typedef typename TypeList<t_ARGS_01,
2926 t_ARGS_14>::Type ArgumentList;
2930#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 0
2931template <
class t_PROTOTYPE,
class t_BSLMF_RETURN,
class t_TYPE>
2932struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2933 t_BSLMF_RETURN (t_TYPE::*)() volatile> {
2936 IS_LVALREF_QUALIFIED = 0,
2937 IS_RVALREF_QUALIFIED = 0,
2942 typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2944 t_TYPE>::Type ClassType;
2945 typedef t_BSLMF_RETURN ResultType;
2950#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 1
2951template <
class t_PROTOTYPE,
2952 class t_BSLMF_RETURN,
2955struct MemberFunctionPointerTraits_Imp<
2957 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01) volatile> {
2960 IS_LVALREF_QUALIFIED = 0,
2961 IS_RVALREF_QUALIFIED = 0,
2965 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2970 typedef t_BSLMF_RETURN ResultType;
2975#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 2
2976template <
class t_PROTOTYPE,
2977 class t_BSLMF_RETURN,
2981struct MemberFunctionPointerTraits_Imp<
2983 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02) volatile> {
2986 IS_LVALREF_QUALIFIED = 0,
2987 IS_RVALREF_QUALIFIED = 0,
2991 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2997 typedef t_BSLMF_RETURN ResultType;
2998 typedef typename TypeList<t_ARGS_01,
2999 t_ARGS_02>::Type ArgumentList;
3003#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 3
3004template <
class t_PROTOTYPE,
3005 class t_BSLMF_RETURN,
3010struct MemberFunctionPointerTraits_Imp<
3012 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03) volatile> {
3015 IS_LVALREF_QUALIFIED = 0,
3016 IS_RVALREF_QUALIFIED = 0,
3020 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3027 typedef t_BSLMF_RETURN ResultType;
3028 typedef typename TypeList<t_ARGS_01,
3030 t_ARGS_03>::Type ArgumentList;
3034#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 4
3035template <
class t_PROTOTYPE,
3036 class t_BSLMF_RETURN,
3042struct MemberFunctionPointerTraits_Imp<
3045 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04) volatile> {
3048 IS_LVALREF_QUALIFIED = 0,
3049 IS_RVALREF_QUALIFIED = 0,
3053 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3061 typedef t_BSLMF_RETURN ResultType;
3062 typedef typename TypeList<t_ARGS_01,
3065 t_ARGS_04>::Type ArgumentList;
3069#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 5
3070template <
class t_PROTOTYPE,
3071 class t_BSLMF_RETURN,
3078struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3079 t_BSLMF_RETURN (t_TYPE::*)(
3084 t_ARGS_05) volatile> {
3087 IS_LVALREF_QUALIFIED = 0,
3088 IS_RVALREF_QUALIFIED = 0,
3092 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3101 typedef t_BSLMF_RETURN ResultType;
3102 typedef typename TypeList<t_ARGS_01,
3106 t_ARGS_05>::Type ArgumentList;
3110#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 6
3111template <
class t_PROTOTYPE,
3112 class t_BSLMF_RETURN,
3120struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3121 t_BSLMF_RETURN (t_TYPE::*)(
3127 t_ARGS_06) volatile> {
3130 IS_LVALREF_QUALIFIED = 0,
3131 IS_RVALREF_QUALIFIED = 0,
3135 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3145 typedef t_BSLMF_RETURN ResultType;
3146 typedef typename TypeList<t_ARGS_01,
3151 t_ARGS_06>::Type ArgumentList;
3155#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 7
3156template <
class t_PROTOTYPE,
3157 class t_BSLMF_RETURN,
3166struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3167 t_BSLMF_RETURN (t_TYPE::*)(
3174 t_ARGS_07) volatile> {
3177 IS_LVALREF_QUALIFIED = 0,
3178 IS_RVALREF_QUALIFIED = 0,
3182 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3193 typedef t_BSLMF_RETURN ResultType;
3194 typedef typename TypeList<t_ARGS_01,
3200 t_ARGS_07>::Type ArgumentList;
3204#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 8
3205template <
class t_PROTOTYPE,
3206 class t_BSLMF_RETURN,
3216struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3217 t_BSLMF_RETURN (t_TYPE::*)(
3225 t_ARGS_08) volatile> {
3228 IS_LVALREF_QUALIFIED = 0,
3229 IS_RVALREF_QUALIFIED = 0,
3233 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3245 typedef t_BSLMF_RETURN ResultType;
3246 typedef typename TypeList<t_ARGS_01,
3253 t_ARGS_08>::Type ArgumentList;
3257#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 9
3258template <
class t_PROTOTYPE,
3259 class t_BSLMF_RETURN,
3270struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3271 t_BSLMF_RETURN (t_TYPE::*)(
3280 t_ARGS_09) volatile> {
3283 IS_LVALREF_QUALIFIED = 0,
3284 IS_RVALREF_QUALIFIED = 0,
3288 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3301 typedef t_BSLMF_RETURN ResultType;
3302 typedef typename TypeList<t_ARGS_01,
3310 t_ARGS_09>::Type ArgumentList;
3314#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 10
3315template <
class t_PROTOTYPE,
3316 class t_BSLMF_RETURN,
3328struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3329 t_BSLMF_RETURN (t_TYPE::*)(
3339 t_ARGS_10) volatile> {
3342 IS_LVALREF_QUALIFIED = 0,
3343 IS_RVALREF_QUALIFIED = 0,
3347 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3361 typedef t_BSLMF_RETURN ResultType;
3362 typedef typename TypeList<t_ARGS_01,
3371 t_ARGS_10>::Type ArgumentList;
3375#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 11
3376template <
class t_PROTOTYPE,
3377 class t_BSLMF_RETURN,
3390struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3391 t_BSLMF_RETURN (t_TYPE::*)(
3402 t_ARGS_11) volatile> {
3405 IS_LVALREF_QUALIFIED = 0,
3406 IS_RVALREF_QUALIFIED = 0,
3410 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3425 typedef t_BSLMF_RETURN ResultType;
3426 typedef typename TypeList<t_ARGS_01,
3436 t_ARGS_11>::Type ArgumentList;
3440#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 12
3441template <
class t_PROTOTYPE,
3442 class t_BSLMF_RETURN,
3456struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3457 t_BSLMF_RETURN (t_TYPE::*)(
3469 t_ARGS_12) volatile> {
3472 IS_LVALREF_QUALIFIED = 0,
3473 IS_RVALREF_QUALIFIED = 0,
3477 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3493 typedef t_BSLMF_RETURN ResultType;
3494 typedef typename TypeList<t_ARGS_01,
3505 t_ARGS_12>::Type ArgumentList;
3509#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 13
3510template <
class t_PROTOTYPE,
3511 class t_BSLMF_RETURN,
3526struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3527 t_BSLMF_RETURN (t_TYPE::*)(
3540 t_ARGS_13) volatile> {
3543 IS_LVALREF_QUALIFIED = 0,
3544 IS_RVALREF_QUALIFIED = 0,
3548 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3565 typedef t_BSLMF_RETURN ResultType;
3566 typedef typename TypeList<t_ARGS_01,
3578 t_ARGS_13>::Type ArgumentList;
3582#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 14
3583template <
class t_PROTOTYPE,
3584 class t_BSLMF_RETURN,
3600struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3601 t_BSLMF_RETURN (t_TYPE::*)(
3615 t_ARGS_14) volatile> {
3618 IS_LVALREF_QUALIFIED = 0,
3619 IS_RVALREF_QUALIFIED = 0,
3623 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3641 typedef t_BSLMF_RETURN ResultType;
3642 typedef typename TypeList<t_ARGS_01,
3655 t_ARGS_14>::Type ArgumentList;
3659#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 0
3660template <
class t_PROTOTYPE,
class t_BSLMF_RETURN,
class t_TYPE>
3661struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3662 t_BSLMF_RETURN (t_TYPE::*)()
3666 IS_LVALREF_QUALIFIED = 0,
3667 IS_RVALREF_QUALIFIED = 0,
3671 typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3673 t_TYPE>::Type ClassType;
3674 typedef t_BSLMF_RETURN ResultType;
3679#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 1
3680template <
class t_PROTOTYPE,
3681 class t_BSLMF_RETURN,
3684struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3685 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01)
3689 IS_LVALREF_QUALIFIED = 0,
3690 IS_RVALREF_QUALIFIED = 0,
3693 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3698 typedef t_BSLMF_RETURN ResultType;
3703#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 2
3704template <
class t_PROTOTYPE,
3705 class t_BSLMF_RETURN,
3709struct MemberFunctionPointerTraits_Imp<
3711 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02) const volatile> {
3714 IS_LVALREF_QUALIFIED = 0,
3715 IS_RVALREF_QUALIFIED = 0,
3718 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3724 typedef t_BSLMF_RETURN ResultType;
3725 typedef typename TypeList<t_ARGS_01,
3726 t_ARGS_02>::Type ArgumentList;
3730#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 3
3731template <
class t_PROTOTYPE,
3732 class t_BSLMF_RETURN,
3737struct MemberFunctionPointerTraits_Imp<
3739 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03)
3743 IS_LVALREF_QUALIFIED = 0,
3744 IS_RVALREF_QUALIFIED = 0,
3747 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3754 typedef t_BSLMF_RETURN ResultType;
3755 typedef typename TypeList<t_ARGS_01,
3757 t_ARGS_03>::Type ArgumentList;
3761#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 4
3762template <
class t_PROTOTYPE,
3763 class t_BSLMF_RETURN,
3769struct MemberFunctionPointerTraits_Imp<
3771 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04)
3775 IS_LVALREF_QUALIFIED = 0,
3776 IS_RVALREF_QUALIFIED = 0,
3779 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3787 typedef t_BSLMF_RETURN ResultType;
3788 typedef typename TypeList<t_ARGS_01,
3791 t_ARGS_04>::Type ArgumentList;
3795#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 5
3796template <
class t_PROTOTYPE,
3797 class t_BSLMF_RETURN,
3804struct MemberFunctionPointerTraits_Imp<
3807 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05)
3811 IS_LVALREF_QUALIFIED = 0,
3812 IS_RVALREF_QUALIFIED = 0,
3815 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3824 typedef t_BSLMF_RETURN ResultType;
3825 typedef typename TypeList<t_ARGS_01,
3829 t_ARGS_05>::Type ArgumentList;
3833#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 6
3834template <
class t_PROTOTYPE,
3835 class t_BSLMF_RETURN,
3843struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3844 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
3853 IS_LVALREF_QUALIFIED = 0,
3854 IS_RVALREF_QUALIFIED = 0,
3857 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3867 typedef t_BSLMF_RETURN ResultType;
3868 typedef typename TypeList<t_ARGS_01,
3873 t_ARGS_06>::Type ArgumentList;
3877#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 7
3878template <
class t_PROTOTYPE,
3879 class t_BSLMF_RETURN,
3888struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3889 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
3899 IS_LVALREF_QUALIFIED = 0,
3900 IS_RVALREF_QUALIFIED = 0,
3903 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3914 typedef t_BSLMF_RETURN ResultType;
3915 typedef typename TypeList<t_ARGS_01,
3921 t_ARGS_07>::Type ArgumentList;
3925#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 8
3926template <
class t_PROTOTYPE,
3927 class t_BSLMF_RETURN,
3937struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3938 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
3949 IS_LVALREF_QUALIFIED = 0,
3950 IS_RVALREF_QUALIFIED = 0,
3953 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3965 typedef t_BSLMF_RETURN ResultType;
3966 typedef typename TypeList<t_ARGS_01,
3973 t_ARGS_08>::Type ArgumentList;
3977#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 9
3978template <
class t_PROTOTYPE,
3979 class t_BSLMF_RETURN,
3990struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3991 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4003 IS_LVALREF_QUALIFIED = 0,
4004 IS_RVALREF_QUALIFIED = 0,
4007 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4020 typedef t_BSLMF_RETURN ResultType;
4021 typedef typename TypeList<t_ARGS_01,
4029 t_ARGS_09>::Type ArgumentList;
4033#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 10
4034template <
class t_PROTOTYPE,
4035 class t_BSLMF_RETURN,
4047struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4048 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4061 IS_LVALREF_QUALIFIED = 0,
4062 IS_RVALREF_QUALIFIED = 0,
4065 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4079 typedef t_BSLMF_RETURN ResultType;
4080 typedef typename TypeList<t_ARGS_01,
4089 t_ARGS_10>::Type ArgumentList;
4093#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 11
4094template <
class t_PROTOTYPE,
4095 class t_BSLMF_RETURN,
4108struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4109 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4123 IS_LVALREF_QUALIFIED = 0,
4124 IS_RVALREF_QUALIFIED = 0,
4127 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4142 typedef t_BSLMF_RETURN ResultType;
4143 typedef typename TypeList<t_ARGS_01,
4153 t_ARGS_11>::Type ArgumentList;
4157#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 12
4158template <
class t_PROTOTYPE,
4159 class t_BSLMF_RETURN,
4173struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4174 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4189 IS_LVALREF_QUALIFIED = 0,
4190 IS_RVALREF_QUALIFIED = 0,
4193 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4209 typedef t_BSLMF_RETURN ResultType;
4210 typedef typename TypeList<t_ARGS_01,
4221 t_ARGS_12>::Type ArgumentList;
4225#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 13
4226template <
class t_PROTOTYPE,
4227 class t_BSLMF_RETURN,
4242struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4243 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4259 IS_LVALREF_QUALIFIED = 0,
4260 IS_RVALREF_QUALIFIED = 0,
4263 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4280 typedef t_BSLMF_RETURN ResultType;
4281 typedef typename TypeList<t_ARGS_01,
4293 t_ARGS_13>::Type ArgumentList;
4297#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 14
4298template <
class t_PROTOTYPE,
4299 class t_BSLMF_RETURN,
4315struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4316 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4333 IS_LVALREF_QUALIFIED = 0,
4334 IS_RVALREF_QUALIFIED = 0,
4337 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4355 typedef t_BSLMF_RETURN ResultType;
4356 typedef typename TypeList<t_ARGS_01,
4369 t_ARGS_14>::Type ArgumentList;
4376template <
class t_PROTOTYPE,
4377 class t_BSLMF_RETURN,
4380struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4381 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)> {
4384 IS_LVALREF_QUALIFIED = 0,
4385 IS_RVALREF_QUALIFIED = 0,
4388 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4393 typedef t_BSLMF_RETURN ResultType;
4394 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4397template <
class t_PROTOTYPE,
4398 class t_BSLMF_RETURN,
4401struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4402 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4406 IS_LVALREF_QUALIFIED = 0,
4407 IS_RVALREF_QUALIFIED = 0,
4410 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4415 typedef t_BSLMF_RETURN ResultType;
4416 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4419template <
class t_PROTOTYPE,
4420 class t_BSLMF_RETURN,
4423struct MemberFunctionPointerTraits_Imp<
4425 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile> {
4428 IS_LVALREF_QUALIFIED = 0,
4429 IS_RVALREF_QUALIFIED = 0,
4433 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4438 typedef t_BSLMF_RETURN ResultType;
4439 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4442template <
class t_PROTOTYPE,
4443 class t_BSLMF_RETURN,
4446struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4447 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4451 IS_LVALREF_QUALIFIED = 0,
4452 IS_RVALREF_QUALIFIED = 0,
4455 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4460 typedef t_BSLMF_RETURN ResultType;
4461 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4467#ifdef BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES
4472template <
class t_PROTOTYPE,
4473 class t_BSLMF_RETURN,
4476struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4477 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4482 IS_LVALREF_QUALIFIED = 0,
4483 IS_RVALREF_QUALIFIED = 0,
4486 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4491 typedef t_BSLMF_RETURN ResultType;
4492 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4498template <
class t_PROTOTYPE,
4499 class t_BSLMF_RETURN,
4502struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4503 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4508 IS_LVALREF_QUALIFIED = 0,
4509 IS_RVALREF_QUALIFIED = 0,
4512 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4517 typedef t_BSLMF_RETURN ResultType;
4518 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4524template <
class t_PROTOTYPE,
4525 class t_BSLMF_RETURN,
4528struct MemberFunctionPointerTraits_Imp<
4530 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile noexcept> {
4534 IS_LVALREF_QUALIFIED = 0,
4535 IS_RVALREF_QUALIFIED = 0,
4539 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4544 typedef t_BSLMF_RETURN ResultType;
4545 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4551template <
class t_PROTOTYPE,
4552 class t_BSLMF_RETURN,
4555struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4556 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4557 const volatile noexcept> {
4561 IS_LVALREF_QUALIFIED = 0,
4562 IS_RVALREF_QUALIFIED = 0,
4565 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4570 typedef t_BSLMF_RETURN ResultType;
4571 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4575#ifdef BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS
4581template <
class t_PROTOTYPE,
4582 class t_BSLMF_RETURN,
4585struct MemberFunctionPointerTraits_Imp<
4587 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)&> {
4591 IS_LVALREF_QUALIFIED = 1,
4592 IS_RVALREF_QUALIFIED = 0,
4595 typedef t_TYPE ClassType;
4596 typedef t_BSLMF_RETURN ResultType;
4597 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4604template <
class t_PROTOTYPE,
4605 class t_BSLMF_RETURN,
4608struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4609 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4614 IS_LVALREF_QUALIFIED = 1,
4615 IS_RVALREF_QUALIFIED = 0,
4618 typedef const t_TYPE ClassType;
4619 typedef t_BSLMF_RETURN ResultType;
4620 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4627template <
class t_PROTOTYPE,
4628 class t_BSLMF_RETURN,
4631struct MemberFunctionPointerTraits_Imp<
4633 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile&> {
4637 IS_LVALREF_QUALIFIED = 1,
4638 IS_RVALREF_QUALIFIED = 0,
4641 typedef volatile t_TYPE ClassType;
4642 typedef t_BSLMF_RETURN ResultType;
4643 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4650template <
class t_PROTOTYPE,
4651 class t_BSLMF_RETURN,
4654struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4655 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4660 IS_LVALREF_QUALIFIED = 1,
4661 IS_RVALREF_QUALIFIED = 0,
4664 typedef const volatile t_TYPE ClassType;
4665 typedef t_BSLMF_RETURN ResultType;
4666 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4669#ifdef BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES
4675template <
class t_PROTOTYPE,
4676 class t_BSLMF_RETURN,
4679struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4680 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) &
4685 IS_LVALREF_QUALIFIED = 1,
4686 IS_RVALREF_QUALIFIED = 0,
4689 typedef t_TYPE ClassType;
4690 typedef t_BSLMF_RETURN ResultType;
4691 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4698template <
class t_PROTOTYPE,
4699 class t_BSLMF_RETURN,
4702struct MemberFunctionPointerTraits_Imp<
4704 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const & noexcept> {
4708 IS_LVALREF_QUALIFIED = 1,
4709 IS_RVALREF_QUALIFIED = 0,
4712 typedef const t_TYPE ClassType;
4713 typedef t_BSLMF_RETURN ResultType;
4714 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4721template <
class t_PROTOTYPE,
4722 class t_BSLMF_RETURN,
4725struct MemberFunctionPointerTraits_Imp<
4727 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile & noexcept> {
4731 IS_LVALREF_QUALIFIED = 1,
4732 IS_RVALREF_QUALIFIED = 0,
4735 typedef volatile t_TYPE ClassType;
4736 typedef t_BSLMF_RETURN ResultType;
4737 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4744template <
class t_PROTOTYPE,
4745 class t_BSLMF_RETURN,
4748struct MemberFunctionPointerTraits_Imp<
4750 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const volatile & noexcept> {
4754 IS_LVALREF_QUALIFIED = 1,
4755 IS_RVALREF_QUALIFIED = 0,
4758 typedef const volatile t_TYPE ClassType;
4759 typedef t_BSLMF_RETURN ResultType;
4760 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4769template <
class t_PROTOTYPE,
4770 class t_BSLMF_RETURN,
4773struct MemberFunctionPointerTraits_Imp<
4775 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) &&> {
4779 IS_LVALREF_QUALIFIED = 0,
4780 IS_RVALREF_QUALIFIED = 1,
4783 typedef t_TYPE ClassType;
4784 typedef t_BSLMF_RETURN ResultType;
4785 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4792template <
class t_PROTOTYPE,
4793 class t_BSLMF_RETURN,
4796struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4797 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4802 IS_LVALREF_QUALIFIED = 0,
4803 IS_RVALREF_QUALIFIED = 1,
4806 typedef const t_TYPE ClassType;
4807 typedef t_BSLMF_RETURN ResultType;
4808 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4815template <
class t_PROTOTYPE,
4816 class t_BSLMF_RETURN,
4819struct MemberFunctionPointerTraits_Imp<
4821 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile&&> {
4825 IS_LVALREF_QUALIFIED = 0,
4826 IS_RVALREF_QUALIFIED = 1,
4829 typedef volatile t_TYPE ClassType;
4830 typedef t_BSLMF_RETURN ResultType;
4831 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4838template <
class t_PROTOTYPE,
4839 class t_BSLMF_RETURN,
4842struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4843 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4848 IS_LVALREF_QUALIFIED = 0,
4849 IS_RVALREF_QUALIFIED = 1,
4852 typedef const volatile t_TYPE ClassType;
4853 typedef t_BSLMF_RETURN ResultType;
4854 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4857#ifdef BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES
4863template <
class t_PROTOTYPE,
4864 class t_BSLMF_RETURN,
4867struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4868 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) &&
4873 IS_LVALREF_QUALIFIED = 0,
4874 IS_RVALREF_QUALIFIED = 1,
4877 typedef t_TYPE ClassType;
4878 typedef t_BSLMF_RETURN ResultType;
4879 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4886template <
class t_PROTOTYPE,
4887 class t_BSLMF_RETURN,
4890struct MemberFunctionPointerTraits_Imp<
4892 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const && noexcept> {
4896 IS_LVALREF_QUALIFIED = 0,
4897 IS_RVALREF_QUALIFIED = 1,
4900 typedef const t_TYPE ClassType;
4901 typedef t_BSLMF_RETURN ResultType;
4902 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4909template <
class t_PROTOTYPE,
4910 class t_BSLMF_RETURN,
4913struct MemberFunctionPointerTraits_Imp<
4915 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile && noexcept> {
4919 IS_LVALREF_QUALIFIED = 0,
4920 IS_RVALREF_QUALIFIED = 1,
4923 typedef volatile t_TYPE ClassType;
4924 typedef t_BSLMF_RETURN ResultType;
4925 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4932template <
class t_PROTOTYPE,
4933 class t_BSLMF_RETURN,
4936struct MemberFunctionPointerTraits_Imp<
4938 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const volatile && noexcept> {
4942 IS_LVALREF_QUALIFIED = 0,
4943 IS_RVALREF_QUALIFIED = 1,
4946 typedef const volatile t_TYPE ClassType;
4947 typedef t_BSLMF_RETURN ResultType;
4948 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4956#ifndef BDE_OPENSOURCE_PUBLICATION
4961#ifdef bslmf_MemberFunctionPointerTraits
4962#undef bslmf_MemberFunctionPointerTraits
4965#define bslmf_MemberFunctionPointerTraits bslmf::MemberFunctionPointerTraits
4967#ifdef bslmf_IsMemberFunctionPointer
4968#undef bslmf_IsMemberFunctionPointer
4971#define bslmf_IsMemberFunctionPointer bslmf::IsMemberFunctionPointer
4973#ifdef bslmf_MemberFunctionPointerTraitsImp
4974#undef bslmf_MemberFunctionPointerTraitsImp
4977#define bslmf_MemberFunctionPointerTraitsImp \
4978 bslmf::MemberFunctionPointerTraits_Imp
Definition bslmf_memberfunctionpointertraits.h:210
@ IS_VOLATILE
Definition bslmf_memberfunctionpointertraits.h:246
@ IS_CONST
Definition bslmf_memberfunctionpointertraits.h:245
If< IS_CONST, constt_TYPE, t_TYPE >::Type CType
Definition bslmf_memberfunctionpointertraits.h:251
If< IS_VOLATILE, volatileCType, CType >::Type Type
Definition bslmf_memberfunctionpointertraits.h:255
#define BSLMF_TAG_TO_UINT(BSLMF_EXPR)
Definition bslmf_tag.h:175
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlbb_blob.h:579
Definition bslmf_integralconstant.h:261
bsl::conditional< t_CONDITION, t_IF_TRUE_TYPE, t_IF_FALSE_TYPE >::type Type
Definition bslmf_if.h:163
Definition bslmf_memberfunctionpointertraits.h:164
t_BSLMF_RETURN ResultType
Definition bslmf_memberfunctionpointertraits.h:1449
TypeList< t_ARGS... >::Type ArgumentList
Definition bslmf_memberfunctionpointertraits.h:1450
MemberFunctionPointerTraits_ClassType< t_PROTOTYPE, t_BSLMF_RETURN, t_TYPE, t_ARGS... >::Type ClassType
Definition bslmf_memberfunctionpointertraits.h:1448
MemberFunctionPointerTraits_ClassType< t_PROTOTYPE, t_BSLMF_RETURN, t_TYPE, t_ARGS... >::Type ClassType
Definition bslmf_memberfunctionpointertraits.h:1475
t_BSLMF_RETURN ResultType
Definition bslmf_memberfunctionpointertraits.h:1476
TypeList< t_ARGS... >::Type ArgumentList
Definition bslmf_memberfunctionpointertraits.h:1477
t_BSLMF_RETURN ResultType
Definition bslmf_memberfunctionpointertraits.h:1423
MemberFunctionPointerTraits_ClassType< t_PROTOTYPE, t_BSLMF_RETURN, t_TYPE, t_ARGS... >::Type ClassType
Definition bslmf_memberfunctionpointertraits.h:1422
TypeList< t_ARGS... >::Type ArgumentList
Definition bslmf_memberfunctionpointertraits.h:1424
t_BSLMF_RETURN ResultType
Definition bslmf_memberfunctionpointertraits.h:1502
MemberFunctionPointerTraits_ClassType< t_PROTOTYPE, t_BSLMF_RETURN, t_TYPE, t_ARGS... >::Type ClassType
Definition bslmf_memberfunctionpointertraits.h:1501
TypeList< t_ARGS... >::Type ArgumentList
Definition bslmf_memberfunctionpointertraits.h:1503
Forward declaration.
Definition bslmf_memberfunctionpointertraits.h:1392
@ IS_MEMBER_FUNCTION_PTR
Definition bslmf_memberfunctionpointertraits.h:1395
Definition bslmf_memberfunctionpointertraits.h:150
Definition bslmf_tag.h:166
ListType Type
Definition bslmf_typelist.h:2486
Definition bslmf_typelist.h:1612