• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*<-
2 Copyright (c) 2016 arett Adair
3 
4 Distributed under the Boost Software License, Version 1.0.
5 (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
6 ->*/
7 
8 
9 #include <boost/callable_traits/apply_member_pointer.hpp>
10 #include "test.hpp"
11 
12 struct a;
13 struct b;
14 
15 template<typename Input, typename Output>
test_case()16 void test_case() {
17     assert_same< TRAIT(apply_member_pointer, Input, b), Output>();
18 }
19 
main()20 int main() {
21 
22     test_case<int(a::*)(),                               int(b::*)()                               >();
23     test_case<int(a::*)() TX_SAFE,                       int(b::*)() TX_SAFE                       >();
24     test_case<int(a::*)() LREF,                          int(b::*)() LREF                          >();
25     test_case<int(a::*)() LREF TX_SAFE,                  int(b::*)() LREF TX_SAFE                  >();
26     test_case<int(a::*)() RREF,                          int(b::*)() RREF                          >();
27     test_case<int(a::*)() RREF TX_SAFE,                  int(b::*)() RREF TX_SAFE                  >();
28     test_case<int(a::*)() const,                         int(b::*)() const                         >();
29     test_case<int(a::*)() const TX_SAFE,                 int(b::*)() const TX_SAFE                 >();
30     test_case<int(a::*)() const LREF,                    int(b::*)() const LREF                    >();
31     test_case<int(a::*)() const LREF TX_SAFE,            int(b::*)() const LREF TX_SAFE            >();
32     test_case<int(a::*)() const RREF,                    int(b::*)() const RREF                    >();
33     test_case<int(a::*)() const RREF TX_SAFE,            int(b::*)() const RREF TX_SAFE            >();
34     test_case<int(a::*)() volatile,                      int(b::*)() volatile                      >();
35     test_case<int(a::*)() volatile TX_SAFE,              int(b::*)() volatile TX_SAFE              >();
36     test_case<int(a::*)() volatile LREF,                 int(b::*)() volatile LREF                 >();
37     test_case<int(a::*)() volatile LREF TX_SAFE,         int(b::*)() volatile LREF TX_SAFE         >();
38     test_case<int(a::*)() volatile RREF,                 int(b::*)() volatile RREF                 >();
39     test_case<int(a::*)() volatile RREF TX_SAFE,         int(b::*)() volatile RREF TX_SAFE         >();
40     test_case<int(a::*)(int),                            int(b::*)(int)                            >();
41     test_case<int(a::*)(int) TX_SAFE,                    int(b::*)(int) TX_SAFE                    >();
42     test_case<int(a::*)(int) LREF,                       int(b::*)(int) LREF                       >();
43     test_case<int(a::*)(int) LREF TX_SAFE,               int(b::*)(int) LREF TX_SAFE               >();
44     test_case<int(a::*)(int) RREF,                       int(b::*)(int) RREF                       >();
45     test_case<int(a::*)(int) RREF TX_SAFE,               int(b::*)(int) RREF TX_SAFE               >();
46     test_case<int(a::*)(int) const,                      int(b::*)(int) const                      >();
47     test_case<int(a::*)(int) const TX_SAFE,              int(b::*)(int) const TX_SAFE              >();
48     test_case<int(a::*)(int) const LREF,                 int(b::*)(int) const LREF                 >();
49     test_case<int(a::*)(int) const LREF TX_SAFE,         int(b::*)(int) const LREF TX_SAFE         >();
50     test_case<int(a::*)(int) const RREF,                 int(b::*)(int) const RREF                 >();
51     test_case<int(a::*)(int) const RREF TX_SAFE,         int(b::*)(int) const RREF TX_SAFE         >();
52     test_case<int(a::*)(int) volatile,                   int(b::*)(int) volatile                   >();
53     test_case<int(a::*)(int) volatile TX_SAFE,           int(b::*)(int) volatile TX_SAFE           >();
54     test_case<int(a::*)(int) volatile LREF,              int(b::*)(int) volatile LREF              >();
55     test_case<int(a::*)(int) volatile LREF TX_SAFE,      int(b::*)(int) volatile LREF TX_SAFE      >();
56     test_case<int(a::*)(int) volatile RREF,              int(b::*)(int) volatile RREF              >();
57     test_case<int(a::*)(int) volatile RREF TX_SAFE,      int(b::*)(int) volatile RREF TX_SAFE      >();
58 
59     test_case<int(VA_CC a::*)(...),                            int(VA_CC b::*)(...)                            >();
60     test_case<int(VA_CC a::*)(...) TX_SAFE,                    int(VA_CC b::*)(...) TX_SAFE                    >();
61     test_case<int(VA_CC a::*)(...) LREF,                       int(VA_CC b::*)(...) LREF                       >();
62     test_case<int(VA_CC a::*)(...) LREF TX_SAFE,               int(VA_CC b::*)(...) LREF TX_SAFE               >();
63     test_case<int(VA_CC a::*)(...) RREF,                       int(VA_CC b::*)(...) RREF                       >();
64     test_case<int(VA_CC a::*)(...) RREF TX_SAFE,               int(VA_CC b::*)(...) RREF TX_SAFE               >();
65     test_case<int(VA_CC a::*)(...) const,                      int(VA_CC b::*)(...) const                      >();
66     test_case<int(VA_CC a::*)(...) const TX_SAFE,              int(VA_CC b::*)(...) const TX_SAFE              >();
67     test_case<int(VA_CC a::*)(...) const LREF,                 int(VA_CC b::*)(...) const LREF                 >();
68     test_case<int(VA_CC a::*)(...) const LREF TX_SAFE,         int(VA_CC b::*)(...) const LREF TX_SAFE         >();
69     test_case<int(VA_CC a::*)(...) const RREF,                 int(VA_CC b::*)(...) const RREF                 >();
70     test_case<int(VA_CC a::*)(...) const RREF TX_SAFE,         int(VA_CC b::*)(...) const RREF TX_SAFE         >();
71     test_case<int(VA_CC a::*)(...) volatile,                   int(VA_CC b::*)(...) volatile                   >();
72     test_case<int(VA_CC a::*)(...) volatile TX_SAFE,           int(VA_CC b::*)(...) volatile TX_SAFE           >();
73     test_case<int(VA_CC a::*)(...) volatile LREF,              int(VA_CC b::*)(...) volatile LREF              >();
74     test_case<int(VA_CC a::*)(...) volatile LREF TX_SAFE,      int(VA_CC b::*)(...) volatile LREF TX_SAFE      >();
75     test_case<int(VA_CC a::*)(...) volatile RREF,              int(VA_CC b::*)(...) volatile RREF              >();
76     test_case<int(VA_CC a::*)(...) volatile RREF TX_SAFE,      int(VA_CC b::*)(...) volatile RREF TX_SAFE      >();
77     test_case<int(VA_CC a::*)(int, ...),                       int(VA_CC b::*)(int, ...)                       >();
78     test_case<int(VA_CC a::*)(int, ...) TX_SAFE,               int(VA_CC b::*)(int, ...) TX_SAFE               >();
79     test_case<int(VA_CC a::*)(int, ...) LREF,                  int(VA_CC b::*)(int, ...) LREF                  >();
80     test_case<int(VA_CC a::*)(int, ...) LREF TX_SAFE,          int(VA_CC b::*)(int, ...) LREF TX_SAFE          >();
81     test_case<int(VA_CC a::*)(int, ...) RREF,                  int(VA_CC b::*)(int, ...) RREF                  >();
82     test_case<int(VA_CC a::*)(int, ...) RREF TX_SAFE,          int(VA_CC b::*)(int, ...) RREF TX_SAFE          >();
83     test_case<int(VA_CC a::*)(int, ...) const,                 int(VA_CC b::*)(int, ...) const                 >();
84     test_case<int(VA_CC a::*)(int, ...) const TX_SAFE,         int(VA_CC b::*)(int, ...) const TX_SAFE         >();
85     test_case<int(VA_CC a::*)(int, ...) const LREF,            int(VA_CC b::*)(int, ...) const LREF            >();
86     test_case<int(VA_CC a::*)(int, ...) const LREF TX_SAFE,    int(VA_CC b::*)(int, ...) const LREF TX_SAFE    >();
87     test_case<int(VA_CC a::*)(int, ...) const RREF,            int(VA_CC b::*)(int, ...) const RREF            >();
88     test_case<int(VA_CC a::*)(int, ...) const RREF TX_SAFE,    int(VA_CC b::*)(int, ...) const RREF TX_SAFE    >();
89     test_case<int(VA_CC a::*)(int, ...) volatile,              int(VA_CC b::*)(int, ...) volatile              >();
90     test_case<int(VA_CC a::*)(int, ...) volatile TX_SAFE,      int(VA_CC b::*)(int, ...) volatile TX_SAFE      >();
91     test_case<int(VA_CC a::*)(int, ...) volatile LREF,         int(VA_CC b::*)(int, ...) volatile LREF         >();
92     test_case<int(VA_CC a::*)(int, ...) volatile LREF TX_SAFE, int(VA_CC b::*)(int, ...) volatile LREF TX_SAFE >();
93     test_case<int(VA_CC a::*)(int, ...) volatile RREF,         int(VA_CC b::*)(int, ...) volatile RREF         >();
94     test_case<int(VA_CC a::*)(int, ...) volatile RREF TX_SAFE, int(VA_CC b::*)(int, ...) volatile RREF TX_SAFE >();
95 }
96