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,
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);
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);
1389template <
class t_PROTOTYPE,
class t_TEST_PROTOTYPE>
1398#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1403template <
class t_PROTOTYPE,
1404 class t_BSLMF_RETURN,
1408 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)> {
1412 IS_LVALREF_QUALIFIED = 0,
1413 IS_RVALREF_QUALIFIED = 0,
1428template <
class t_PROTOTYPE,
1429 class t_BSLMF_RETURN,
1433 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
1438 IS_LVALREF_QUALIFIED = 0,
1439 IS_RVALREF_QUALIFIED = 0,
1454template <
class t_PROTOTYPE,
1455 class t_BSLMF_RETURN,
1460 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile> {
1464 IS_LVALREF_QUALIFIED = 0,
1465 IS_RVALREF_QUALIFIED = 0,
1481template <
class t_PROTOTYPE,
1482 class t_BSLMF_RETURN,
1486 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
1491 IS_LVALREF_QUALIFIED = 0,
1492 IS_RVALREF_QUALIFIED = 0,
1504#elif BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
1509#ifndef BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT
1510#define BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT 14
1512#ifndef BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B
1513#define BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B \
1514 BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT
1516#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 0
1517template <
class t_PROTOTYPE,
class t_BSLMF_RETURN,
class t_TYPE>
1519 t_BSLMF_RETURN (t_TYPE::*)()> {
1522 IS_LVALREF_QUALIFIED = 0,
1523 IS_RVALREF_QUALIFIED = 0,
1527 typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1529 t_TYPE>::Type ClassType;
1530 typedef t_BSLMF_RETURN ResultType;
1535#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 1
1536template <
class t_PROTOTYPE,
1537 class t_BSLMF_RETURN,
1540struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1541 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01)> {
1544 IS_LVALREF_QUALIFIED = 0,
1545 IS_RVALREF_QUALIFIED = 0,
1548 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1553 typedef t_BSLMF_RETURN ResultType;
1558#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 2
1559template <
class t_PROTOTYPE,
1560 class t_BSLMF_RETURN,
1564struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1565 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1569 IS_LVALREF_QUALIFIED = 0,
1570 IS_RVALREF_QUALIFIED = 0,
1573 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1579 typedef t_BSLMF_RETURN ResultType;
1580 typedef typename TypeList<t_ARGS_01,
1581 t_ARGS_02>::Type ArgumentList;
1585#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 3
1586template <
class t_PROTOTYPE,
1587 class t_BSLMF_RETURN,
1592struct MemberFunctionPointerTraits_Imp<
1594 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03)> {
1597 IS_LVALREF_QUALIFIED = 0,
1598 IS_RVALREF_QUALIFIED = 0,
1601 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1608 typedef t_BSLMF_RETURN ResultType;
1609 typedef typename TypeList<t_ARGS_01,
1611 t_ARGS_03>::Type ArgumentList;
1615#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 4
1616template <
class t_PROTOTYPE,
1617 class t_BSLMF_RETURN,
1623struct MemberFunctionPointerTraits_Imp<
1625 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04)> {
1628 IS_LVALREF_QUALIFIED = 0,
1629 IS_RVALREF_QUALIFIED = 0,
1632 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1640 typedef t_BSLMF_RETURN ResultType;
1641 typedef typename TypeList<t_ARGS_01,
1644 t_ARGS_04>::Type ArgumentList;
1648#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 5
1649template <
class t_PROTOTYPE,
1650 class t_BSLMF_RETURN,
1657struct MemberFunctionPointerTraits_Imp<
1660 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05)> {
1663 IS_LVALREF_QUALIFIED = 0,
1664 IS_RVALREF_QUALIFIED = 0,
1667 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1676 typedef t_BSLMF_RETURN ResultType;
1677 typedef typename TypeList<t_ARGS_01,
1681 t_ARGS_05>::Type ArgumentList;
1685#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 6
1686template <
class t_PROTOTYPE,
1687 class t_BSLMF_RETURN,
1695struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1696 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1704 IS_LVALREF_QUALIFIED = 0,
1705 IS_RVALREF_QUALIFIED = 0,
1708 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1718 typedef t_BSLMF_RETURN ResultType;
1719 typedef typename TypeList<t_ARGS_01,
1724 t_ARGS_06>::Type ArgumentList;
1728#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 7
1729template <
class t_PROTOTYPE,
1730 class t_BSLMF_RETURN,
1739struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1740 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1749 IS_LVALREF_QUALIFIED = 0,
1750 IS_RVALREF_QUALIFIED = 0,
1753 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1764 typedef t_BSLMF_RETURN ResultType;
1765 typedef typename TypeList<t_ARGS_01,
1771 t_ARGS_07>::Type ArgumentList;
1775#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 8
1776template <
class t_PROTOTYPE,
1777 class t_BSLMF_RETURN,
1787struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1788 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1798 IS_LVALREF_QUALIFIED = 0,
1799 IS_RVALREF_QUALIFIED = 0,
1802 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1814 typedef t_BSLMF_RETURN ResultType;
1815 typedef typename TypeList<t_ARGS_01,
1822 t_ARGS_08>::Type ArgumentList;
1826#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 9
1827template <
class t_PROTOTYPE,
1828 class t_BSLMF_RETURN,
1839struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1840 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1851 IS_LVALREF_QUALIFIED = 0,
1852 IS_RVALREF_QUALIFIED = 0,
1855 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1868 typedef t_BSLMF_RETURN ResultType;
1869 typedef typename TypeList<t_ARGS_01,
1877 t_ARGS_09>::Type ArgumentList;
1881#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 10
1882template <
class t_PROTOTYPE,
1883 class t_BSLMF_RETURN,
1895struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1896 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1908 IS_LVALREF_QUALIFIED = 0,
1909 IS_RVALREF_QUALIFIED = 0,
1912 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1926 typedef t_BSLMF_RETURN ResultType;
1927 typedef typename TypeList<t_ARGS_01,
1936 t_ARGS_10>::Type ArgumentList;
1940#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 11
1941template <
class t_PROTOTYPE,
1942 class t_BSLMF_RETURN,
1955struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
1956 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
1969 IS_LVALREF_QUALIFIED = 0,
1970 IS_RVALREF_QUALIFIED = 0,
1973 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
1988 typedef t_BSLMF_RETURN ResultType;
1989 typedef typename TypeList<t_ARGS_01,
1999 t_ARGS_11>::Type ArgumentList;
2003#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 12
2004template <
class t_PROTOTYPE,
2005 class t_BSLMF_RETURN,
2019struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2020 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2034 IS_LVALREF_QUALIFIED = 0,
2035 IS_RVALREF_QUALIFIED = 0,
2038 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2054 typedef t_BSLMF_RETURN ResultType;
2055 typedef typename TypeList<t_ARGS_01,
2066 t_ARGS_12>::Type ArgumentList;
2070#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 13
2071template <
class t_PROTOTYPE,
2072 class t_BSLMF_RETURN,
2087struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2088 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2103 IS_LVALREF_QUALIFIED = 0,
2104 IS_RVALREF_QUALIFIED = 0,
2107 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2124 typedef t_BSLMF_RETURN ResultType;
2125 typedef typename TypeList<t_ARGS_01,
2137 t_ARGS_13>::Type ArgumentList;
2141#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 14
2142template <
class t_PROTOTYPE,
2143 class t_BSLMF_RETURN,
2159struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2160 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2176 IS_LVALREF_QUALIFIED = 0,
2177 IS_RVALREF_QUALIFIED = 0,
2180 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2198 typedef t_BSLMF_RETURN ResultType;
2199 typedef typename TypeList<t_ARGS_01,
2212 t_ARGS_14>::Type ArgumentList;
2216#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 0
2217template <
class t_PROTOTYPE,
class t_BSLMF_RETURN,
class t_TYPE>
2218struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2219 t_BSLMF_RETURN (t_TYPE::*)() const> {
2222 IS_LVALREF_QUALIFIED = 0,
2223 IS_RVALREF_QUALIFIED = 0,
2227 typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2229 t_TYPE>::Type ClassType;
2230 typedef t_BSLMF_RETURN ResultType;
2235#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 1
2236template <
class t_PROTOTYPE,
2237 class t_BSLMF_RETURN,
2240struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2241 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01)
2245 IS_LVALREF_QUALIFIED = 0,
2246 IS_RVALREF_QUALIFIED = 0,
2249 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2254 typedef t_BSLMF_RETURN ResultType;
2259#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 2
2260template <
class t_PROTOTYPE,
2261 class t_BSLMF_RETURN,
2265struct MemberFunctionPointerTraits_Imp<
2267 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02) const> {
2270 IS_LVALREF_QUALIFIED = 0,
2271 IS_RVALREF_QUALIFIED = 0,
2274 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2280 typedef t_BSLMF_RETURN ResultType;
2281 typedef typename TypeList<t_ARGS_01,
2282 t_ARGS_02>::Type ArgumentList;
2286#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 3
2287template <
class t_PROTOTYPE,
2288 class t_BSLMF_RETURN,
2293struct MemberFunctionPointerTraits_Imp<
2295 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03) const> {
2298 IS_LVALREF_QUALIFIED = 0,
2299 IS_RVALREF_QUALIFIED = 0,
2302 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2309 typedef t_BSLMF_RETURN ResultType;
2310 typedef typename TypeList<t_ARGS_01,
2312 t_ARGS_03>::Type ArgumentList;
2316#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 4
2317template <
class t_PROTOTYPE,
2318 class t_BSLMF_RETURN,
2324struct MemberFunctionPointerTraits_Imp<
2326 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04)
2330 IS_LVALREF_QUALIFIED = 0,
2331 IS_RVALREF_QUALIFIED = 0,
2334 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2342 typedef t_BSLMF_RETURN ResultType;
2343 typedef typename TypeList<t_ARGS_01,
2346 t_ARGS_04>::Type ArgumentList;
2350#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 5
2351template <
class t_PROTOTYPE,
2352 class t_BSLMF_RETURN,
2359struct MemberFunctionPointerTraits_Imp<
2362 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05)
2366 IS_LVALREF_QUALIFIED = 0,
2367 IS_RVALREF_QUALIFIED = 0,
2370 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2379 typedef t_BSLMF_RETURN ResultType;
2380 typedef typename TypeList<t_ARGS_01,
2384 t_ARGS_05>::Type ArgumentList;
2388#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 6
2389template <
class t_PROTOTYPE,
2390 class t_BSLMF_RETURN,
2398struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2399 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2408 IS_LVALREF_QUALIFIED = 0,
2409 IS_RVALREF_QUALIFIED = 0,
2412 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2422 typedef t_BSLMF_RETURN ResultType;
2423 typedef typename TypeList<t_ARGS_01,
2428 t_ARGS_06>::Type ArgumentList;
2432#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 7
2433template <
class t_PROTOTYPE,
2434 class t_BSLMF_RETURN,
2443struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2444 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2454 IS_LVALREF_QUALIFIED = 0,
2455 IS_RVALREF_QUALIFIED = 0,
2458 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2469 typedef t_BSLMF_RETURN ResultType;
2470 typedef typename TypeList<t_ARGS_01,
2476 t_ARGS_07>::Type ArgumentList;
2480#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 8
2481template <
class t_PROTOTYPE,
2482 class t_BSLMF_RETURN,
2492struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2493 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2504 IS_LVALREF_QUALIFIED = 0,
2505 IS_RVALREF_QUALIFIED = 0,
2508 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2520 typedef t_BSLMF_RETURN ResultType;
2521 typedef typename TypeList<t_ARGS_01,
2528 t_ARGS_08>::Type ArgumentList;
2532#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 9
2533template <
class t_PROTOTYPE,
2534 class t_BSLMF_RETURN,
2545struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2546 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2558 IS_LVALREF_QUALIFIED = 0,
2559 IS_RVALREF_QUALIFIED = 0,
2562 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2575 typedef t_BSLMF_RETURN ResultType;
2576 typedef typename TypeList<t_ARGS_01,
2584 t_ARGS_09>::Type ArgumentList;
2588#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 10
2589template <
class t_PROTOTYPE,
2590 class t_BSLMF_RETURN,
2602struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2603 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2616 IS_LVALREF_QUALIFIED = 0,
2617 IS_RVALREF_QUALIFIED = 0,
2620 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2634 typedef t_BSLMF_RETURN ResultType;
2635 typedef typename TypeList<t_ARGS_01,
2644 t_ARGS_10>::Type ArgumentList;
2648#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 11
2649template <
class t_PROTOTYPE,
2650 class t_BSLMF_RETURN,
2663struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2664 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2678 IS_LVALREF_QUALIFIED = 0,
2679 IS_RVALREF_QUALIFIED = 0,
2682 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2697 typedef t_BSLMF_RETURN ResultType;
2698 typedef typename TypeList<t_ARGS_01,
2708 t_ARGS_11>::Type ArgumentList;
2712#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 12
2713template <
class t_PROTOTYPE,
2714 class t_BSLMF_RETURN,
2728struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2729 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2744 IS_LVALREF_QUALIFIED = 0,
2745 IS_RVALREF_QUALIFIED = 0,
2748 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2764 typedef t_BSLMF_RETURN ResultType;
2765 typedef typename TypeList<t_ARGS_01,
2776 t_ARGS_12>::Type ArgumentList;
2780#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 13
2781template <
class t_PROTOTYPE,
2782 class t_BSLMF_RETURN,
2797struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2798 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2814 IS_LVALREF_QUALIFIED = 0,
2815 IS_RVALREF_QUALIFIED = 0,
2818 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2835 typedef t_BSLMF_RETURN ResultType;
2836 typedef typename TypeList<t_ARGS_01,
2848 t_ARGS_13>::Type ArgumentList;
2852#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 14
2853template <
class t_PROTOTYPE,
2854 class t_BSLMF_RETURN,
2870struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2871 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
2888 IS_LVALREF_QUALIFIED = 0,
2889 IS_RVALREF_QUALIFIED = 0,
2892 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2910 typedef t_BSLMF_RETURN ResultType;
2911 typedef typename TypeList<t_ARGS_01,
2924 t_ARGS_14>::Type ArgumentList;
2928#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 0
2929template <
class t_PROTOTYPE,
class t_BSLMF_RETURN,
class t_TYPE>
2930struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
2931 t_BSLMF_RETURN (t_TYPE::*)() volatile> {
2934 IS_LVALREF_QUALIFIED = 0,
2935 IS_RVALREF_QUALIFIED = 0,
2940 typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2942 t_TYPE>::Type ClassType;
2943 typedef t_BSLMF_RETURN ResultType;
2948#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 1
2949template <
class t_PROTOTYPE,
2950 class t_BSLMF_RETURN,
2953struct MemberFunctionPointerTraits_Imp<
2955 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01) volatile> {
2958 IS_LVALREF_QUALIFIED = 0,
2959 IS_RVALREF_QUALIFIED = 0,
2963 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2968 typedef t_BSLMF_RETURN ResultType;
2973#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 2
2974template <
class t_PROTOTYPE,
2975 class t_BSLMF_RETURN,
2979struct MemberFunctionPointerTraits_Imp<
2981 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02) volatile> {
2984 IS_LVALREF_QUALIFIED = 0,
2985 IS_RVALREF_QUALIFIED = 0,
2989 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
2995 typedef t_BSLMF_RETURN ResultType;
2996 typedef typename TypeList<t_ARGS_01,
2997 t_ARGS_02>::Type ArgumentList;
3001#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 3
3002template <
class t_PROTOTYPE,
3003 class t_BSLMF_RETURN,
3008struct MemberFunctionPointerTraits_Imp<
3010 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03) volatile> {
3013 IS_LVALREF_QUALIFIED = 0,
3014 IS_RVALREF_QUALIFIED = 0,
3018 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3025 typedef t_BSLMF_RETURN ResultType;
3026 typedef typename TypeList<t_ARGS_01,
3028 t_ARGS_03>::Type ArgumentList;
3032#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 4
3033template <
class t_PROTOTYPE,
3034 class t_BSLMF_RETURN,
3040struct MemberFunctionPointerTraits_Imp<
3043 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04) volatile> {
3046 IS_LVALREF_QUALIFIED = 0,
3047 IS_RVALREF_QUALIFIED = 0,
3051 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3059 typedef t_BSLMF_RETURN ResultType;
3060 typedef typename TypeList<t_ARGS_01,
3063 t_ARGS_04>::Type ArgumentList;
3067#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 5
3068template <
class t_PROTOTYPE,
3069 class t_BSLMF_RETURN,
3076struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3077 t_BSLMF_RETURN (t_TYPE::*)(
3082 t_ARGS_05) volatile> {
3085 IS_LVALREF_QUALIFIED = 0,
3086 IS_RVALREF_QUALIFIED = 0,
3090 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3099 typedef t_BSLMF_RETURN ResultType;
3100 typedef typename TypeList<t_ARGS_01,
3104 t_ARGS_05>::Type ArgumentList;
3108#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 6
3109template <
class t_PROTOTYPE,
3110 class t_BSLMF_RETURN,
3118struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3119 t_BSLMF_RETURN (t_TYPE::*)(
3125 t_ARGS_06) volatile> {
3128 IS_LVALREF_QUALIFIED = 0,
3129 IS_RVALREF_QUALIFIED = 0,
3133 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3143 typedef t_BSLMF_RETURN ResultType;
3144 typedef typename TypeList<t_ARGS_01,
3149 t_ARGS_06>::Type ArgumentList;
3153#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 7
3154template <
class t_PROTOTYPE,
3155 class t_BSLMF_RETURN,
3164struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3165 t_BSLMF_RETURN (t_TYPE::*)(
3172 t_ARGS_07) volatile> {
3175 IS_LVALREF_QUALIFIED = 0,
3176 IS_RVALREF_QUALIFIED = 0,
3180 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3191 typedef t_BSLMF_RETURN ResultType;
3192 typedef typename TypeList<t_ARGS_01,
3198 t_ARGS_07>::Type ArgumentList;
3202#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 8
3203template <
class t_PROTOTYPE,
3204 class t_BSLMF_RETURN,
3214struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3215 t_BSLMF_RETURN (t_TYPE::*)(
3223 t_ARGS_08) volatile> {
3226 IS_LVALREF_QUALIFIED = 0,
3227 IS_RVALREF_QUALIFIED = 0,
3231 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3243 typedef t_BSLMF_RETURN ResultType;
3244 typedef typename TypeList<t_ARGS_01,
3251 t_ARGS_08>::Type ArgumentList;
3255#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 9
3256template <
class t_PROTOTYPE,
3257 class t_BSLMF_RETURN,
3268struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3269 t_BSLMF_RETURN (t_TYPE::*)(
3278 t_ARGS_09) volatile> {
3281 IS_LVALREF_QUALIFIED = 0,
3282 IS_RVALREF_QUALIFIED = 0,
3286 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3299 typedef t_BSLMF_RETURN ResultType;
3300 typedef typename TypeList<t_ARGS_01,
3308 t_ARGS_09>::Type ArgumentList;
3312#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 10
3313template <
class t_PROTOTYPE,
3314 class t_BSLMF_RETURN,
3326struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3327 t_BSLMF_RETURN (t_TYPE::*)(
3337 t_ARGS_10) volatile> {
3340 IS_LVALREF_QUALIFIED = 0,
3341 IS_RVALREF_QUALIFIED = 0,
3345 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3359 typedef t_BSLMF_RETURN ResultType;
3360 typedef typename TypeList<t_ARGS_01,
3369 t_ARGS_10>::Type ArgumentList;
3373#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 11
3374template <
class t_PROTOTYPE,
3375 class t_BSLMF_RETURN,
3388struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3389 t_BSLMF_RETURN (t_TYPE::*)(
3400 t_ARGS_11) volatile> {
3403 IS_LVALREF_QUALIFIED = 0,
3404 IS_RVALREF_QUALIFIED = 0,
3408 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3423 typedef t_BSLMF_RETURN ResultType;
3424 typedef typename TypeList<t_ARGS_01,
3434 t_ARGS_11>::Type ArgumentList;
3438#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 12
3439template <
class t_PROTOTYPE,
3440 class t_BSLMF_RETURN,
3454struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3455 t_BSLMF_RETURN (t_TYPE::*)(
3467 t_ARGS_12) volatile> {
3470 IS_LVALREF_QUALIFIED = 0,
3471 IS_RVALREF_QUALIFIED = 0,
3475 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3491 typedef t_BSLMF_RETURN ResultType;
3492 typedef typename TypeList<t_ARGS_01,
3503 t_ARGS_12>::Type ArgumentList;
3507#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 13
3508template <
class t_PROTOTYPE,
3509 class t_BSLMF_RETURN,
3524struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3525 t_BSLMF_RETURN (t_TYPE::*)(
3538 t_ARGS_13) volatile> {
3541 IS_LVALREF_QUALIFIED = 0,
3542 IS_RVALREF_QUALIFIED = 0,
3546 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3563 typedef t_BSLMF_RETURN ResultType;
3564 typedef typename TypeList<t_ARGS_01,
3576 t_ARGS_13>::Type ArgumentList;
3580#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 14
3581template <
class t_PROTOTYPE,
3582 class t_BSLMF_RETURN,
3598struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3599 t_BSLMF_RETURN (t_TYPE::*)(
3613 t_ARGS_14) volatile> {
3616 IS_LVALREF_QUALIFIED = 0,
3617 IS_RVALREF_QUALIFIED = 0,
3621 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3639 typedef t_BSLMF_RETURN ResultType;
3640 typedef typename TypeList<t_ARGS_01,
3653 t_ARGS_14>::Type ArgumentList;
3657#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 0
3658template <
class t_PROTOTYPE,
class t_BSLMF_RETURN,
class t_TYPE>
3659struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3660 t_BSLMF_RETURN (t_TYPE::*)()
3664 IS_LVALREF_QUALIFIED = 0,
3665 IS_RVALREF_QUALIFIED = 0,
3669 typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3671 t_TYPE>::Type ClassType;
3672 typedef t_BSLMF_RETURN ResultType;
3677#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 1
3678template <
class t_PROTOTYPE,
3679 class t_BSLMF_RETURN,
3682struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3683 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01)
3687 IS_LVALREF_QUALIFIED = 0,
3688 IS_RVALREF_QUALIFIED = 0,
3691 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3696 typedef t_BSLMF_RETURN ResultType;
3701#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 2
3702template <
class t_PROTOTYPE,
3703 class t_BSLMF_RETURN,
3707struct MemberFunctionPointerTraits_Imp<
3709 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02) const volatile> {
3712 IS_LVALREF_QUALIFIED = 0,
3713 IS_RVALREF_QUALIFIED = 0,
3716 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3722 typedef t_BSLMF_RETURN ResultType;
3723 typedef typename TypeList<t_ARGS_01,
3724 t_ARGS_02>::Type ArgumentList;
3728#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 3
3729template <
class t_PROTOTYPE,
3730 class t_BSLMF_RETURN,
3735struct MemberFunctionPointerTraits_Imp<
3737 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03)
3741 IS_LVALREF_QUALIFIED = 0,
3742 IS_RVALREF_QUALIFIED = 0,
3745 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3752 typedef t_BSLMF_RETURN ResultType;
3753 typedef typename TypeList<t_ARGS_01,
3755 t_ARGS_03>::Type ArgumentList;
3759#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 4
3760template <
class t_PROTOTYPE,
3761 class t_BSLMF_RETURN,
3767struct MemberFunctionPointerTraits_Imp<
3769 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04)
3773 IS_LVALREF_QUALIFIED = 0,
3774 IS_RVALREF_QUALIFIED = 0,
3777 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3785 typedef t_BSLMF_RETURN ResultType;
3786 typedef typename TypeList<t_ARGS_01,
3789 t_ARGS_04>::Type ArgumentList;
3793#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 5
3794template <
class t_PROTOTYPE,
3795 class t_BSLMF_RETURN,
3802struct MemberFunctionPointerTraits_Imp<
3805 t_TYPE::*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05)
3809 IS_LVALREF_QUALIFIED = 0,
3810 IS_RVALREF_QUALIFIED = 0,
3813 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3822 typedef t_BSLMF_RETURN ResultType;
3823 typedef typename TypeList<t_ARGS_01,
3827 t_ARGS_05>::Type ArgumentList;
3831#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 6
3832template <
class t_PROTOTYPE,
3833 class t_BSLMF_RETURN,
3841struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3842 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
3851 IS_LVALREF_QUALIFIED = 0,
3852 IS_RVALREF_QUALIFIED = 0,
3855 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3865 typedef t_BSLMF_RETURN ResultType;
3866 typedef typename TypeList<t_ARGS_01,
3871 t_ARGS_06>::Type ArgumentList;
3875#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 7
3876template <
class t_PROTOTYPE,
3877 class t_BSLMF_RETURN,
3886struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3887 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
3897 IS_LVALREF_QUALIFIED = 0,
3898 IS_RVALREF_QUALIFIED = 0,
3901 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3912 typedef t_BSLMF_RETURN ResultType;
3913 typedef typename TypeList<t_ARGS_01,
3919 t_ARGS_07>::Type ArgumentList;
3923#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 8
3924template <
class t_PROTOTYPE,
3925 class t_BSLMF_RETURN,
3935struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3936 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
3947 IS_LVALREF_QUALIFIED = 0,
3948 IS_RVALREF_QUALIFIED = 0,
3951 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
3963 typedef t_BSLMF_RETURN ResultType;
3964 typedef typename TypeList<t_ARGS_01,
3971 t_ARGS_08>::Type ArgumentList;
3975#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 9
3976template <
class t_PROTOTYPE,
3977 class t_BSLMF_RETURN,
3988struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
3989 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4001 IS_LVALREF_QUALIFIED = 0,
4002 IS_RVALREF_QUALIFIED = 0,
4005 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4018 typedef t_BSLMF_RETURN ResultType;
4019 typedef typename TypeList<t_ARGS_01,
4027 t_ARGS_09>::Type ArgumentList;
4031#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 10
4032template <
class t_PROTOTYPE,
4033 class t_BSLMF_RETURN,
4045struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4046 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4059 IS_LVALREF_QUALIFIED = 0,
4060 IS_RVALREF_QUALIFIED = 0,
4063 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4077 typedef t_BSLMF_RETURN ResultType;
4078 typedef typename TypeList<t_ARGS_01,
4087 t_ARGS_10>::Type ArgumentList;
4091#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 11
4092template <
class t_PROTOTYPE,
4093 class t_BSLMF_RETURN,
4106struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4107 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4121 IS_LVALREF_QUALIFIED = 0,
4122 IS_RVALREF_QUALIFIED = 0,
4125 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4140 typedef t_BSLMF_RETURN ResultType;
4141 typedef typename TypeList<t_ARGS_01,
4151 t_ARGS_11>::Type ArgumentList;
4155#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 12
4156template <
class t_PROTOTYPE,
4157 class t_BSLMF_RETURN,
4171struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4172 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4187 IS_LVALREF_QUALIFIED = 0,
4188 IS_RVALREF_QUALIFIED = 0,
4191 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4207 typedef t_BSLMF_RETURN ResultType;
4208 typedef typename TypeList<t_ARGS_01,
4219 t_ARGS_12>::Type ArgumentList;
4223#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 13
4224template <
class t_PROTOTYPE,
4225 class t_BSLMF_RETURN,
4240struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4241 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4257 IS_LVALREF_QUALIFIED = 0,
4258 IS_RVALREF_QUALIFIED = 0,
4261 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4278 typedef t_BSLMF_RETURN ResultType;
4279 typedef typename TypeList<t_ARGS_01,
4291 t_ARGS_13>::Type ArgumentList;
4295#if BSLMF_MEMBERFUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_B >= 14
4296template <
class t_PROTOTYPE,
4297 class t_BSLMF_RETURN,
4313struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4314 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS_01,
4331 IS_LVALREF_QUALIFIED = 0,
4332 IS_RVALREF_QUALIFIED = 0,
4335 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4353 typedef t_BSLMF_RETURN ResultType;
4354 typedef typename TypeList<t_ARGS_01,
4367 t_ARGS_14>::Type ArgumentList;
4374template <
class t_PROTOTYPE,
4375 class t_BSLMF_RETURN,
4378struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4379 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)> {
4382 IS_LVALREF_QUALIFIED = 0,
4383 IS_RVALREF_QUALIFIED = 0,
4386 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4391 typedef t_BSLMF_RETURN ResultType;
4392 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4395template <
class t_PROTOTYPE,
4396 class t_BSLMF_RETURN,
4399struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4400 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4404 IS_LVALREF_QUALIFIED = 0,
4405 IS_RVALREF_QUALIFIED = 0,
4408 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4413 typedef t_BSLMF_RETURN ResultType;
4414 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4417template <
class t_PROTOTYPE,
4418 class t_BSLMF_RETURN,
4421struct MemberFunctionPointerTraits_Imp<
4423 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile> {
4426 IS_LVALREF_QUALIFIED = 0,
4427 IS_RVALREF_QUALIFIED = 0,
4431 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4436 typedef t_BSLMF_RETURN ResultType;
4437 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4440template <
class t_PROTOTYPE,
4441 class t_BSLMF_RETURN,
4444struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4445 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4449 IS_LVALREF_QUALIFIED = 0,
4450 IS_RVALREF_QUALIFIED = 0,
4453 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4458 typedef t_BSLMF_RETURN ResultType;
4459 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4465#ifdef BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES
4470template <
class t_PROTOTYPE,
4471 class t_BSLMF_RETURN,
4474struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4475 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4480 IS_LVALREF_QUALIFIED = 0,
4481 IS_RVALREF_QUALIFIED = 0,
4484 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4489 typedef t_BSLMF_RETURN ResultType;
4490 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4496template <
class t_PROTOTYPE,
4497 class t_BSLMF_RETURN,
4500struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4501 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4506 IS_LVALREF_QUALIFIED = 0,
4507 IS_RVALREF_QUALIFIED = 0,
4510 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4515 typedef t_BSLMF_RETURN ResultType;
4516 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4522template <
class t_PROTOTYPE,
4523 class t_BSLMF_RETURN,
4526struct MemberFunctionPointerTraits_Imp<
4528 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile noexcept> {
4532 IS_LVALREF_QUALIFIED = 0,
4533 IS_RVALREF_QUALIFIED = 0,
4537 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4542 typedef t_BSLMF_RETURN ResultType;
4543 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4549template <
class t_PROTOTYPE,
4550 class t_BSLMF_RETURN,
4553struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4554 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4555 const volatile noexcept> {
4559 IS_LVALREF_QUALIFIED = 0,
4560 IS_RVALREF_QUALIFIED = 0,
4563 typedef typename MemberFunctionPointerTraits_ClassType<t_PROTOTYPE,
4568 typedef t_BSLMF_RETURN ResultType;
4569 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4573#ifdef BSLS_COMPILERFEATURES_SUPPORT_REF_QUALIFIERS
4579template <
class t_PROTOTYPE,
4580 class t_BSLMF_RETURN,
4583struct MemberFunctionPointerTraits_Imp<
4585 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)&> {
4589 IS_LVALREF_QUALIFIED = 1,
4590 IS_RVALREF_QUALIFIED = 0,
4593 typedef t_TYPE ClassType;
4594 typedef t_BSLMF_RETURN ResultType;
4595 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4602template <
class t_PROTOTYPE,
4603 class t_BSLMF_RETURN,
4606struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4607 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4612 IS_LVALREF_QUALIFIED = 1,
4613 IS_RVALREF_QUALIFIED = 0,
4616 typedef const t_TYPE ClassType;
4617 typedef t_BSLMF_RETURN ResultType;
4618 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4625template <
class t_PROTOTYPE,
4626 class t_BSLMF_RETURN,
4629struct MemberFunctionPointerTraits_Imp<
4631 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile&> {
4635 IS_LVALREF_QUALIFIED = 1,
4636 IS_RVALREF_QUALIFIED = 0,
4639 typedef volatile t_TYPE ClassType;
4640 typedef t_BSLMF_RETURN ResultType;
4641 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4648template <
class t_PROTOTYPE,
4649 class t_BSLMF_RETURN,
4652struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4653 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4658 IS_LVALREF_QUALIFIED = 1,
4659 IS_RVALREF_QUALIFIED = 0,
4662 typedef const volatile t_TYPE ClassType;
4663 typedef t_BSLMF_RETURN ResultType;
4664 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4667#ifdef BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES
4673template <
class t_PROTOTYPE,
4674 class t_BSLMF_RETURN,
4677struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4678 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) &
4683 IS_LVALREF_QUALIFIED = 1,
4684 IS_RVALREF_QUALIFIED = 0,
4687 typedef t_TYPE ClassType;
4688 typedef t_BSLMF_RETURN ResultType;
4689 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4696template <
class t_PROTOTYPE,
4697 class t_BSLMF_RETURN,
4700struct MemberFunctionPointerTraits_Imp<
4702 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const & noexcept> {
4706 IS_LVALREF_QUALIFIED = 1,
4707 IS_RVALREF_QUALIFIED = 0,
4710 typedef const t_TYPE ClassType;
4711 typedef t_BSLMF_RETURN ResultType;
4712 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4719template <
class t_PROTOTYPE,
4720 class t_BSLMF_RETURN,
4723struct MemberFunctionPointerTraits_Imp<
4725 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile & noexcept> {
4729 IS_LVALREF_QUALIFIED = 1,
4730 IS_RVALREF_QUALIFIED = 0,
4733 typedef volatile t_TYPE ClassType;
4734 typedef t_BSLMF_RETURN ResultType;
4735 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4742template <
class t_PROTOTYPE,
4743 class t_BSLMF_RETURN,
4746struct MemberFunctionPointerTraits_Imp<
4748 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const volatile & noexcept> {
4752 IS_LVALREF_QUALIFIED = 1,
4753 IS_RVALREF_QUALIFIED = 0,
4756 typedef const volatile t_TYPE ClassType;
4757 typedef t_BSLMF_RETURN ResultType;
4758 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4767template <
class t_PROTOTYPE,
4768 class t_BSLMF_RETURN,
4771struct MemberFunctionPointerTraits_Imp<
4773 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) &&> {
4777 IS_LVALREF_QUALIFIED = 0,
4778 IS_RVALREF_QUALIFIED = 1,
4781 typedef t_TYPE ClassType;
4782 typedef t_BSLMF_RETURN ResultType;
4783 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4790template <
class t_PROTOTYPE,
4791 class t_BSLMF_RETURN,
4794struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4795 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4800 IS_LVALREF_QUALIFIED = 0,
4801 IS_RVALREF_QUALIFIED = 1,
4804 typedef const t_TYPE ClassType;
4805 typedef t_BSLMF_RETURN ResultType;
4806 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4813template <
class t_PROTOTYPE,
4814 class t_BSLMF_RETURN,
4817struct MemberFunctionPointerTraits_Imp<
4819 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile&&> {
4823 IS_LVALREF_QUALIFIED = 0,
4824 IS_RVALREF_QUALIFIED = 1,
4827 typedef volatile t_TYPE ClassType;
4828 typedef t_BSLMF_RETURN ResultType;
4829 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4836template <
class t_PROTOTYPE,
4837 class t_BSLMF_RETURN,
4840struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4841 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...)
4846 IS_LVALREF_QUALIFIED = 0,
4847 IS_RVALREF_QUALIFIED = 1,
4850 typedef const volatile t_TYPE ClassType;
4851 typedef t_BSLMF_RETURN ResultType;
4852 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4855#ifdef BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES
4861template <
class t_PROTOTYPE,
4862 class t_BSLMF_RETURN,
4865struct MemberFunctionPointerTraits_Imp<t_PROTOTYPE,
4866 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) &&
4871 IS_LVALREF_QUALIFIED = 0,
4872 IS_RVALREF_QUALIFIED = 1,
4875 typedef t_TYPE ClassType;
4876 typedef t_BSLMF_RETURN ResultType;
4877 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4884template <
class t_PROTOTYPE,
4885 class t_BSLMF_RETURN,
4888struct MemberFunctionPointerTraits_Imp<
4890 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const && noexcept> {
4894 IS_LVALREF_QUALIFIED = 0,
4895 IS_RVALREF_QUALIFIED = 1,
4898 typedef const t_TYPE ClassType;
4899 typedef t_BSLMF_RETURN ResultType;
4900 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4907template <
class t_PROTOTYPE,
4908 class t_BSLMF_RETURN,
4911struct MemberFunctionPointerTraits_Imp<
4913 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) volatile && noexcept> {
4917 IS_LVALREF_QUALIFIED = 0,
4918 IS_RVALREF_QUALIFIED = 1,
4921 typedef volatile t_TYPE ClassType;
4922 typedef t_BSLMF_RETURN ResultType;
4923 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4930template <
class t_PROTOTYPE,
4931 class t_BSLMF_RETURN,
4934struct MemberFunctionPointerTraits_Imp<
4936 t_BSLMF_RETURN (t_TYPE::*)(t_ARGS...) const volatile && noexcept> {
4940 IS_LVALREF_QUALIFIED = 0,
4941 IS_RVALREF_QUALIFIED = 1,
4944 typedef const volatile t_TYPE ClassType;
4945 typedef t_BSLMF_RETURN ResultType;
4946 typedef typename TypeList<t_ARGS...>::Type ArgumentList;
4954#ifndef BDE_OPENSOURCE_PUBLICATION
4959#ifdef bslmf_MemberFunctionPointerTraits
4960#undef bslmf_MemberFunctionPointerTraits
4963#define bslmf_MemberFunctionPointerTraits bslmf::MemberFunctionPointerTraits
4965#ifdef bslmf_IsMemberFunctionPointer
4966#undef bslmf_IsMemberFunctionPointer
4969#define bslmf_IsMemberFunctionPointer bslmf::IsMemberFunctionPointer
4971#ifdef bslmf_MemberFunctionPointerTraitsImp
4972#undef bslmf_MemberFunctionPointerTraitsImp
4975#define bslmf_MemberFunctionPointerTraitsImp \
4976 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:172
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
Definition bdlbb_blob.h:576
Definition bslmf_integralconstant.h:244
bsl::conditional< t_CONDITION, t_IF_TRUE_TYPE, t_IF_FALSE_TYPE >::type Type
Definition bslmf_if.h:161
Definition bslmf_memberfunctionpointertraits.h:164
t_BSLMF_RETURN ResultType
Definition bslmf_memberfunctionpointertraits.h:1447
TypeList< t_ARGS... >::Type ArgumentList
Definition bslmf_memberfunctionpointertraits.h:1448
MemberFunctionPointerTraits_ClassType< t_PROTOTYPE, t_BSLMF_RETURN, t_TYPE, t_ARGS... >::Type ClassType
Definition bslmf_memberfunctionpointertraits.h:1446
MemberFunctionPointerTraits_ClassType< t_PROTOTYPE, t_BSLMF_RETURN, t_TYPE, t_ARGS... >::Type ClassType
Definition bslmf_memberfunctionpointertraits.h:1473
t_BSLMF_RETURN ResultType
Definition bslmf_memberfunctionpointertraits.h:1474
TypeList< t_ARGS... >::Type ArgumentList
Definition bslmf_memberfunctionpointertraits.h:1475
t_BSLMF_RETURN ResultType
Definition bslmf_memberfunctionpointertraits.h:1421
MemberFunctionPointerTraits_ClassType< t_PROTOTYPE, t_BSLMF_RETURN, t_TYPE, t_ARGS... >::Type ClassType
Definition bslmf_memberfunctionpointertraits.h:1420
TypeList< t_ARGS... >::Type ArgumentList
Definition bslmf_memberfunctionpointertraits.h:1422
t_BSLMF_RETURN ResultType
Definition bslmf_memberfunctionpointertraits.h:1500
MemberFunctionPointerTraits_ClassType< t_PROTOTYPE, t_BSLMF_RETURN, t_TYPE, t_ARGS... >::Type ClassType
Definition bslmf_memberfunctionpointertraits.h:1499
TypeList< t_ARGS... >::Type ArgumentList
Definition bslmf_memberfunctionpointertraits.h:1501
Forward declaration.
Definition bslmf_memberfunctionpointertraits.h:1390
@ IS_MEMBER_FUNCTION_PTR
Definition bslmf_memberfunctionpointertraits.h:1393
Definition bslmf_memberfunctionpointertraits.h:150
Definition bslmf_tag.h:163
ListType Type
Definition bslmf_typelist.h:2470
Definition bslmf_typelist.h:1609