File: apply_member_pointer_function.cpp

package info (click to toggle)
boost1.83 1.83.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 545,632 kB
  • sloc: cpp: 3,857,086; xml: 125,552; ansic: 34,414; python: 25,887; asm: 5,276; sh: 4,799; ada: 1,681; makefile: 1,629; perl: 1,212; pascal: 1,139; sql: 810; yacc: 478; ruby: 102; lisp: 24; csh: 6
file content (114 lines) | stat: -rw-r--r-- 8,120 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*<-
Copyright (c) 2016-2017 Barrett Adair

Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
->*/


#include <boost/callable_traits/apply_member_pointer.hpp>
#include "test.hpp"

struct foo;

template<typename Input, typename Output>
void test_case() {
    assert_same<TRAIT(apply_member_pointer, Input, foo), Output>();
}

int main() {

    test_case<int(),                               int(foo::*)()                               >();

#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
    test_case<int() TX_SAFE,                       int(foo::*)() TX_SAFE                       >();
    test_case<int() LREF,                          int(foo::*)() LREF                          >();
    test_case<int() LREF TX_SAFE,                  int(foo::*)() LREF TX_SAFE                  >();
    test_case<int() RREF,                          int(foo::*)() RREF                          >();
    test_case<int() RREF TX_SAFE,                  int(foo::*)() RREF TX_SAFE                  >();
    test_case<int() const,                         int(foo::*)() const                         >();
    test_case<int() const TX_SAFE,                 int(foo::*)() const TX_SAFE                 >();
    test_case<int() const LREF,                    int(foo::*)() const LREF                    >();
    test_case<int() const LREF TX_SAFE,            int(foo::*)() const LREF TX_SAFE            >();
    test_case<int() const RREF,                    int(foo::*)() const RREF                    >();
    test_case<int() const RREF TX_SAFE,            int(foo::*)() const RREF TX_SAFE            >();
    test_case<int() volatile,                      int(foo::*)() volatile                      >();
    test_case<int() volatile TX_SAFE,              int(foo::*)() volatile TX_SAFE              >();
    test_case<int() volatile LREF,                 int(foo::*)() volatile LREF                 >();
    test_case<int() volatile LREF TX_SAFE,         int(foo::*)() volatile LREF TX_SAFE         >();
    test_case<int() volatile RREF,                 int(foo::*)() volatile RREF                 >();
    test_case<int() volatile RREF TX_SAFE,         int(foo::*)() volatile RREF TX_SAFE         >();
#endif

    test_case<int(int),                            int(foo::*)(int)                            >();

#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
    test_case<int(int) TX_SAFE,                    int(foo::*)(int) TX_SAFE                    >();
    test_case<int(int) LREF,                       int(foo::*)(int) LREF                       >();
    test_case<int(int) LREF TX_SAFE,               int(foo::*)(int) LREF TX_SAFE               >();
    test_case<int(int) RREF,                       int(foo::*)(int) RREF                       >();
    test_case<int(int) RREF TX_SAFE,               int(foo::*)(int) RREF TX_SAFE               >();
    test_case<int(int) const,                      int(foo::*)(int) const                      >();
    test_case<int(int) const TX_SAFE,              int(foo::*)(int) const TX_SAFE              >();
    test_case<int(int) const LREF,                 int(foo::*)(int) const LREF                 >();
    test_case<int(int) const LREF TX_SAFE,         int(foo::*)(int) const LREF TX_SAFE         >();
    test_case<int(int) const RREF,                 int(foo::*)(int) const RREF                 >();
    test_case<int(int) const RREF TX_SAFE,         int(foo::*)(int) const RREF TX_SAFE         >();
    test_case<int(int) volatile,                   int(foo::*)(int) volatile                   >();
    test_case<int(int) volatile TX_SAFE,           int(foo::*)(int) volatile TX_SAFE           >();
    test_case<int(int) volatile LREF,              int(foo::*)(int) volatile LREF              >();
    test_case<int(int) volatile LREF TX_SAFE,      int(foo::*)(int) volatile LREF TX_SAFE      >();
    test_case<int(int) volatile RREF,              int(foo::*)(int) volatile RREF              >();
    test_case<int(int) volatile RREF TX_SAFE,      int(foo::*)(int) volatile RREF TX_SAFE      >();
#endif

//old MSVC doesn't like varargs on abominable functions
#ifndef BOOST_CLBL_TRTS_OLD_MSVC

    test_case<int(...),                            int(foo::*)(...)                            >();


#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
    test_case<int(...) TX_SAFE,                    int(foo::*)(...) TX_SAFE                    >();
    test_case<int(...) LREF,                       int(foo::*)(...) LREF                       >();
    test_case<int(...) LREF TX_SAFE,               int(foo::*)(...) LREF TX_SAFE               >();
    test_case<int(...) RREF,                       int(foo::*)(...) RREF                       >();
    test_case<int(...) RREF TX_SAFE,               int(foo::*)(...) RREF TX_SAFE               >();
    test_case<int(...) const,                      int(foo::*)(...) const                      >();
    test_case<int(...) const TX_SAFE,              int(foo::*)(...) const TX_SAFE              >();
    test_case<int(...) const LREF,                 int(foo::*)(...) const LREF                 >();
    test_case<int(...) const LREF TX_SAFE,         int(foo::*)(...) const LREF TX_SAFE         >();
    test_case<int(...) const RREF,                 int(foo::*)(...) const RREF                 >();
    test_case<int(...) const RREF TX_SAFE,         int(foo::*)(...) const RREF TX_SAFE         >();
    test_case<int(...) volatile,                   int(foo::*)(...) volatile                   >();
    test_case<int(...) volatile TX_SAFE,           int(foo::*)(...) volatile TX_SAFE           >();
    test_case<int(...) volatile LREF,              int(foo::*)(...) volatile LREF              >();
    test_case<int(...) volatile LREF TX_SAFE,      int(foo::*)(...) volatile LREF TX_SAFE      >();
    test_case<int(...) volatile RREF,              int(foo::*)(...) volatile RREF              >();
    test_case<int(...) volatile RREF TX_SAFE,      int(foo::*)(...) volatile RREF TX_SAFE      >();
#endif //#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS

    test_case<int(int, ...),                       int(foo::*)(int, ...)                       >();

#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
    test_case<int(int, ...) TX_SAFE,               int(foo::*)(int, ...) TX_SAFE               >();
    test_case<int(int, ...) LREF,                  int(foo::*)(int, ...) LREF                  >();
    test_case<int(int, ...) LREF TX_SAFE,          int(foo::*)(int, ...) LREF TX_SAFE          >();
    test_case<int(int, ...) RREF,                  int(foo::*)(int, ...) RREF                  >();
    test_case<int(int, ...) RREF TX_SAFE,          int(foo::*)(int, ...) RREF TX_SAFE          >();
    test_case<int(int, ...) const,                 int(foo::*)(int, ...) const                 >();
    test_case<int(int, ...) const TX_SAFE,         int(foo::*)(int, ...) const TX_SAFE         >();
    test_case<int(int, ...) const LREF,            int(foo::*)(int, ...) const LREF            >();
    test_case<int(int, ...) const LREF TX_SAFE,    int(foo::*)(int, ...) const LREF TX_SAFE    >();
    test_case<int(int, ...) const RREF,            int(foo::*)(int, ...) const RREF            >();
    test_case<int(int, ...) const RREF TX_SAFE,    int(foo::*)(int, ...) const RREF TX_SAFE    >();
    test_case<int(int, ...) volatile,              int(foo::*)(int, ...) volatile              >();
    test_case<int(int, ...) volatile TX_SAFE,      int(foo::*)(int, ...) volatile TX_SAFE      >();
    test_case<int(int, ...) volatile LREF,         int(foo::*)(int, ...) volatile LREF         >();
    test_case<int(int, ...) volatile LREF TX_SAFE, int(foo::*)(int, ...) volatile LREF TX_SAFE >();
    test_case<int(int, ...) volatile RREF,         int(foo::*)(int, ...) volatile RREF         >();
    test_case<int(int, ...) volatile RREF TX_SAFE, int(foo::*)(int, ...) volatile RREF TX_SAFE >();
#endif //#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
#endif //#ifndef BOOST_CLBL_TRTS_OLD_MSVC

}