]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/callable_traits/test/add_varargs.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / callable_traits / test / add_varargs.cpp
1 /*
2 Copyright Barrett Adair 2016-2017
3 Distributed under the Boost Software License, Version 1.0.
4 (See accompanying file LICENSE.md or copy at http ://boost.org/LICENSE_1_0.txt)
5 */
6
7 #include <type_traits>
8 #include <functional>
9 #include <tuple>
10 #include <boost/callable_traits/add_varargs.hpp>
11 #include "test.hpp"
12
13 struct foo {};
14
15 int main() {
16
17 {
18 using f = void(foo::*)();
19 using l = void(foo::*)() LREF;
20 using r = void(foo::*)() RREF ;
21 using c = void(foo::*)() const;
22 using cl = void(foo::*)() const LREF;
23 using cr = void(foo::*)() const RREF;
24 using v = void(foo::*)() volatile;
25 using vl = void(foo::*)() volatile LREF;
26 using vr = void(foo::*)() volatile RREF;
27 using cv = void(foo::*)() const volatile;
28 using cvl = void(foo::*)() const volatile LREF;
29 using cvr = void(foo::*)() const volatile RREF;
30
31 using va_f = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...);
32 using va_l = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) LREF;
33 using va_r = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) RREF ;
34 using va_c = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) const;
35 using va_cl = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) const LREF;
36 using va_cr = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) const RREF;
37 using va_v = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) volatile;
38 using va_vl = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) volatile LREF;
39 using va_vr = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) volatile RREF;
40 using va_cv = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) const volatile;
41 using va_cvl = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) const volatile LREF;
42 using va_cvr = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(...) const volatile RREF;
43
44 CT_ASSERT(std::is_same<va_f, TRAIT(add_varargs, f)>{});
45 CT_ASSERT(std::is_same<va_l, TRAIT(add_varargs, l)>{});
46 CT_ASSERT(std::is_same<va_r, TRAIT(add_varargs, r)>{});
47 CT_ASSERT(std::is_same<va_c, TRAIT(add_varargs, c)>{});
48 CT_ASSERT(std::is_same<va_cl, TRAIT(add_varargs, cl)>{});
49 CT_ASSERT(std::is_same<va_cr, TRAIT(add_varargs, cr)>{});
50 CT_ASSERT(std::is_same<va_v, TRAIT(add_varargs, v)>{});
51 CT_ASSERT(std::is_same<va_vl, TRAIT(add_varargs, vl)>{});
52 CT_ASSERT(std::is_same<va_vr, TRAIT(add_varargs, vr)>{});
53 CT_ASSERT(std::is_same<va_cv, TRAIT(add_varargs, cv)>{});
54 CT_ASSERT(std::is_same<va_cvl, TRAIT(add_varargs, cvl)>{});
55 CT_ASSERT(std::is_same<va_cvr, TRAIT(add_varargs, cvr)>{});
56
57 CT_ASSERT(std::is_same<va_f, TRAIT(add_varargs, va_f)>{});
58 CT_ASSERT(std::is_same<va_l, TRAIT(add_varargs, va_l)>{});
59 CT_ASSERT(std::is_same<va_r, TRAIT(add_varargs, va_r)>{});
60 CT_ASSERT(std::is_same<va_c, TRAIT(add_varargs, va_c)>{});
61 CT_ASSERT(std::is_same<va_cl, TRAIT(add_varargs, va_cl)>{});
62 CT_ASSERT(std::is_same<va_cr, TRAIT(add_varargs, va_cr)>{});
63 CT_ASSERT(std::is_same<va_v, TRAIT(add_varargs, va_v)>{});
64 CT_ASSERT(std::is_same<va_vl, TRAIT(add_varargs, va_vl)>{});
65 CT_ASSERT(std::is_same<va_vr, TRAIT(add_varargs, va_vr)>{});
66 CT_ASSERT(std::is_same<va_cv, TRAIT(add_varargs, va_cv)>{});
67 CT_ASSERT(std::is_same<va_cvl, TRAIT(add_varargs, va_cvl)>{});
68 CT_ASSERT(std::is_same<va_cvr, TRAIT(add_varargs, va_cvr)>{});
69 }
70
71 {
72 using f = void(foo::*)(int&, int&&);
73 using l = void(foo::*)(int&, int&&) LREF;
74 using r = void(foo::*)(int&, int&&) RREF ;
75 using c = void(foo::*)(int&, int&&) const;
76 using cl = void(foo::*)(int&, int&&) const LREF;
77 using cr = void(foo::*)(int&, int&&) const RREF;
78 using v = void(foo::*)(int&, int&&) volatile;
79 using vl = void(foo::*)(int&, int&&) volatile LREF;
80 using vr = void(foo::*)(int&, int&&) volatile RREF;
81 using cv = void(foo::*)(int&, int&&) const volatile;
82 using cvl = void(foo::*)(int&, int&&) const volatile LREF;
83 using cvr = void(foo::*)(int&, int&&) const volatile RREF;
84
85 using va_f = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...);
86 using va_l = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) LREF;
87 using va_r = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) RREF ;
88 using va_c = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) const;
89 using va_cl = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) const LREF;
90 using va_cr = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) const RREF;
91 using va_v = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) volatile;
92 using va_vl = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) volatile LREF;
93 using va_vr = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) volatile RREF;
94 using va_cv = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) const volatile;
95 using va_cvl = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) const volatile LREF;
96 using va_cvr = void(BOOST_CLBL_TRTS_DEFAULT_VARARGS_CC foo::*)(int&, int&&, ...) const volatile RREF;
97
98 CT_ASSERT(std::is_same<va_f, TRAIT(add_varargs, f)>{});
99 CT_ASSERT(std::is_same<va_l, TRAIT(add_varargs, l)>{});
100 CT_ASSERT(std::is_same<va_r, TRAIT(add_varargs, r)>{});
101 CT_ASSERT(std::is_same<va_c, TRAIT(add_varargs, c)>{});
102 CT_ASSERT(std::is_same<va_cl, TRAIT(add_varargs, cl)>{});
103 CT_ASSERT(std::is_same<va_cr, TRAIT(add_varargs, cr)>{});
104 CT_ASSERT(std::is_same<va_v, TRAIT(add_varargs, v)>{});
105 CT_ASSERT(std::is_same<va_vl, TRAIT(add_varargs, vl)>{});
106 CT_ASSERT(std::is_same<va_vr, TRAIT(add_varargs, vr)>{});
107 CT_ASSERT(std::is_same<va_cv, TRAIT(add_varargs, cv)>{});
108 CT_ASSERT(std::is_same<va_cvl, TRAIT(add_varargs, cvl)>{});
109 CT_ASSERT(std::is_same<va_cvr, TRAIT(add_varargs, cvr)>{});
110
111 CT_ASSERT(std::is_same<va_f, TRAIT(add_varargs, va_f)>{});
112 CT_ASSERT(std::is_same<va_l, TRAIT(add_varargs, va_l)>{});
113 CT_ASSERT(std::is_same<va_r, TRAIT(add_varargs, va_r)>{});
114 CT_ASSERT(std::is_same<va_c, TRAIT(add_varargs, va_c)>{});
115 CT_ASSERT(std::is_same<va_cl, TRAIT(add_varargs, va_cl)>{});
116 CT_ASSERT(std::is_same<va_cr, TRAIT(add_varargs, va_cr)>{});
117 CT_ASSERT(std::is_same<va_v, TRAIT(add_varargs, va_v)>{});
118 CT_ASSERT(std::is_same<va_vl, TRAIT(add_varargs, va_vl)>{});
119 CT_ASSERT(std::is_same<va_vr, TRAIT(add_varargs, va_vr)>{});
120 CT_ASSERT(std::is_same<va_cv, TRAIT(add_varargs, va_cv)>{});
121 CT_ASSERT(std::is_same<va_cvl, TRAIT(add_varargs, va_cvl)>{});
122 CT_ASSERT(std::is_same<va_cvr, TRAIT(add_varargs, va_cvr)>{});
123 }
124
125 #ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
126
127 {
128 using f = void();
129 using l = void() LREF;
130 using r = void() RREF ;
131 using c = void() const;
132 using cl = void() const LREF;
133 using cr = void() const RREF;
134 using v = void() volatile;
135 using vl = void() volatile LREF;
136 using vr = void() volatile RREF;
137 using cv = void() const volatile;
138 using cvl = void() const volatile LREF;
139 using cvr = void() const volatile RREF;
140
141 using va_f = void(...);
142 using va_l = void(...) LREF;
143 using va_r = void(...) RREF ;
144 using va_c = void(...) const;
145 using va_cl = void(...) const LREF;
146 using va_cr = void(...) const RREF;
147 using va_v = void(...) volatile;
148 using va_vl = void(...) volatile LREF;
149 using va_vr = void(...) volatile RREF;
150 using va_cv = void(...) const volatile;
151 using va_cvl = void(...) const volatile LREF;
152 using va_cvr = void(...) const volatile RREF;
153
154 CT_ASSERT(std::is_same<va_f, TRAIT(add_varargs, f)>{});
155 CT_ASSERT(std::is_same<va_l, TRAIT(add_varargs, l)>{});
156 CT_ASSERT(std::is_same<va_r, TRAIT(add_varargs, r)>{});
157 CT_ASSERT(std::is_same<va_c, TRAIT(add_varargs, c)>{});
158 CT_ASSERT(std::is_same<va_cl, TRAIT(add_varargs, cl)>{});
159 CT_ASSERT(std::is_same<va_cr, TRAIT(add_varargs, cr)>{});
160 CT_ASSERT(std::is_same<va_v, TRAIT(add_varargs, v)>{});
161 CT_ASSERT(std::is_same<va_vl, TRAIT(add_varargs, vl)>{});
162 CT_ASSERT(std::is_same<va_vr, TRAIT(add_varargs, vr)>{});
163 CT_ASSERT(std::is_same<va_cv, TRAIT(add_varargs, cv)>{});
164 CT_ASSERT(std::is_same<va_cvl, TRAIT(add_varargs, cvl)>{});
165 CT_ASSERT(std::is_same<va_cvr, TRAIT(add_varargs, cvr)>{});
166
167 CT_ASSERT(std::is_same<va_f, TRAIT(add_varargs, va_f)>{});
168 CT_ASSERT(std::is_same<va_l, TRAIT(add_varargs, va_l)>{});
169 CT_ASSERT(std::is_same<va_r, TRAIT(add_varargs, va_r)>{});
170 CT_ASSERT(std::is_same<va_c, TRAIT(add_varargs, va_c)>{});
171 CT_ASSERT(std::is_same<va_cl, TRAIT(add_varargs, va_cl)>{});
172 CT_ASSERT(std::is_same<va_cr, TRAIT(add_varargs, va_cr)>{});
173 CT_ASSERT(std::is_same<va_v, TRAIT(add_varargs, va_v)>{});
174 CT_ASSERT(std::is_same<va_vl, TRAIT(add_varargs, va_vl)>{});
175 CT_ASSERT(std::is_same<va_vr, TRAIT(add_varargs, va_vr)>{});
176 CT_ASSERT(std::is_same<va_cv, TRAIT(add_varargs, va_cv)>{});
177 CT_ASSERT(std::is_same<va_cvl, TRAIT(add_varargs, va_cvl)>{});
178 CT_ASSERT(std::is_same<va_cvr, TRAIT(add_varargs, va_cvr)>{});
179 }
180
181 #endif //#ifndef BOOST_CLBL_TRTS_DISABLE_ABOMINABLE_FUNCTIONS
182
183 {
184 using f = void(&)();
185 using va_f = void(&)(...);
186 CT_ASSERT(std::is_same<va_f, TRAIT(add_varargs, f)>{});
187 }
188 }