]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / boost / type_traits / detail / is_member_function_pointer_cxx_11.hpp
1
2 // (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
3 // Hinnant & John Maddock 2000.
4 // Use, modification and distribution are subject to the Boost Software License,
5 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt).
7 //
8 // See http://www.boost.org/libs/type_traits for most recent version including documentation.
9
10
11 #ifndef BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED
12 #define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED
13
14 #include <boost/type_traits/integral_constant.hpp>
15
16 namespace boost {
17
18 #ifdef _MSC_VER
19 #define BOOST_TT_DEF_CALL __thiscall
20 #else
21 #define BOOST_TT_DEF_CALL
22 #endif
23
24
25 template <class T>
26 struct is_member_function_pointer : public false_type {};
27 template <class T>
28 struct is_member_function_pointer<T const> : public is_member_function_pointer<T> {};
29 template <class T>
30 struct is_member_function_pointer<T volatile> : public is_member_function_pointer<T> {};
31 template <class T>
32 struct is_member_function_pointer<T const volatile> : public is_member_function_pointer<T> {};
33
34 #if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM)
35 // MSVC can't handle noexcept(b) as a deduced template parameter
36 // so we will have to write everything out :(
37 #define BOOST_TT_NOEXCEPT_PARAM
38 #define BOOST_TT_NOEXCEPT_DECL
39 #elif defined(__cpp_noexcept_function_type)
40 #define BOOST_TT_NOEXCEPT_PARAM , bool NE
41 #define BOOST_TT_NOEXCEPT_DECL noexcept(NE)
42 #else
43 #define BOOST_TT_NOEXCEPT_PARAM
44 #define BOOST_TT_NOEXCEPT_DECL
45 #endif
46
47 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
48 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
49 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
50 struct is_member_function_pointer<Ret (C::*)(Args..., ...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
51 // const qualified:
52 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
53 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
54 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
55 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
56 // volatile:
57 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
58 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
59 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
60 struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
61 // const volatile
62 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
63 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
64 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
65 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
66
67 // Reference qualified:
68
69 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
70 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
71 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
72 struct is_member_function_pointer<Ret(C::*)(Args..., ...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
73 // const qualified:
74 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
75 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
76 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
77 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
78 // volatile:
79 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
80 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
81 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
82 struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
83 // const volatile
84 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
85 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
86 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
87 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
88
89 // rvalue reference qualified:
90
91 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
92 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
93 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
94 struct is_member_function_pointer<Ret(C::*)(Args..., ...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
95 // const qualified:
96 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
97 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
98 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
99 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
100 // volatile:
101 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
102 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
103 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
104 struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
105 // const volatile
106 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
107 struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
108 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
109 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
110
111 #if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
112 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
113 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
114 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
115 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
116 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
117 #endif
118 #ifdef _MANAGED
119 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
120 struct is_member_function_pointer<Ret (__clrcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
121 #else
122 #ifndef _M_AMD64
123 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
124 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
125 #endif
126 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
127 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
128 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
129 #endif
130 #endif
131
132 // const:
133 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
134 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
135 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
136 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
137 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
138 #endif
139 #ifdef _MANAGED
140 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
141 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
142 #else
143 #ifndef _M_AMD64
144 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
145 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
146 #endif
147 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
148 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
149 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
150 #endif
151 #endif
152
153 // volatile:
154 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
155 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
156 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
157 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
158 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
159 #endif
160 #ifdef _MANAGED
161 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
162 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
163 #else
164 #ifndef _M_AMD64
165 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
166 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
167 #endif
168 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
169 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
170 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
171 #endif
172 #endif
173
174 // const volatile:
175 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
176 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
177 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
178 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
179 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
180 #endif
181 #ifdef _MANAGED
182 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
183 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
184 #else
185 #ifndef _M_AMD64
186 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
187 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
188 #endif
189 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
190 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
191 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
192 #endif
193 #endif
194
195 // reference qualified:
196 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
197 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
198 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
199 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
200 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
201 #endif
202 #ifdef _MANAGED
203 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
204 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
205 #else
206 #ifndef _M_AMD64
207 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
208 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
209 #endif
210 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
211 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
212 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
213 #endif
214 #endif
215
216 // const:
217 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
218 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
219 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
220 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
221 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
222 #endif
223 #ifdef _MANAGED
224 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
225 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
226 #else
227 #ifndef _M_AMD64
228 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
229 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
230 #endif
231 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
232 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
233 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
234 #endif
235 #endif
236
237 // volatile:
238 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
239 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
240 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
241 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
242 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
243 #endif
244 #ifdef _MANAGED
245 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
246 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
247 #else
248 #ifndef _M_AMD64
249 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
250 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
251 #endif
252 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
253 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
254 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
255 #endif
256 #endif
257
258 // const volatile:
259 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
260 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
261 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
262 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
263 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
264 #endif
265 #ifdef _MANAGED
266 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
267 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
268 #else
269 #ifndef _M_AMD64
270 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
271 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
272 #endif
273 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
274 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
275 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
276 #endif
277 #endif
278
279 // rvalue reference qualified:
280 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
281 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
282 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
283 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
284 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
285 #endif
286 #ifdef _MANAGED
287 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
288 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
289 #else
290 #ifndef _M_AMD64
291 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
292 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
293 #endif
294 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
295 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
296 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
297 #endif
298 #endif
299
300 // const:
301 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
302 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
303 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
304 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
305 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
306 #endif
307 #ifdef _MANAGED
308 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
309 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
310 #else
311 #ifndef _M_AMD64
312 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
313 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
314 #endif
315 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
316 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
317 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
318 #endif
319 #endif
320
321 // volatile:
322 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
323 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
324 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
325 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
326 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
327 #endif
328 #ifdef _MANAGED
329 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
330 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
331 #else
332 #ifndef _M_AMD64
333 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
334 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
335 #endif
336 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
337 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
338 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
339 #endif
340 #endif
341
342 // const volatile:
343 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
344 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
345 struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
346 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
347 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
348 #endif
349 #ifdef _MANAGED
350 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
351 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
352 #else
353 #ifndef _M_AMD64
354 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
355 struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
356 #endif
357 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
358 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
359 struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
360 #endif
361 #endif
362
363 #endif
364
365
366 #if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM) && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE)
367
368 #undef BOOST_TT_NOEXCEPT_DECL
369 #define BOOST_TT_NOEXCEPT_DECL noexcept
370
371 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
372 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
373 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
374 struct is_member_function_pointer<Ret(C::*)(Args..., ...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
375 // const qualified:
376 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
377 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
378 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
379 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
380 // volatile:
381 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
382 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
383 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
384 struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
385 // const volatile
386 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
387 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
388 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
389 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
390
391 // Reference qualified:
392
393 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
394 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
395 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
396 struct is_member_function_pointer<Ret(C::*)(Args..., ...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
397 // const qualified:
398 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
399 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
400 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
401 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
402 // volatile:
403 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
404 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
405 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
406 struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
407 // const volatile
408 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
409 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
410 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
411 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
412
413 // rvalue reference qualified:
414
415 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
416 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
417 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
418 struct is_member_function_pointer<Ret(C::*)(Args..., ...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
419 // const qualified:
420 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
421 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
422 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
423 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
424 // volatile:
425 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
426 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
427 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
428 struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
429 // const volatile
430 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
431 struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
432 template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
433 struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
434
435 #if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
436 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
437 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
438 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
439 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
440 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
441 #endif
442 #ifdef _MANAGED
443 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
444 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
445 #else
446 #ifndef _M_AMD64
447 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
448 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
449 #endif
450 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
451 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
452 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
453 #endif
454 #endif
455
456 // const:
457 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
458 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
459 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
460 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
461 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
462 #endif
463 #ifdef _MANAGED
464 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
465 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
466 #else
467 #ifndef _M_AMD64
468 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
469 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
470 #endif
471 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
472 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
473 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
474 #endif
475 #endif
476
477 // volatile:
478 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
479 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
480 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
481 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
482 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
483 #endif
484 #ifdef _MANAGED
485 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
486 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
487 #else
488 #ifndef _M_AMD64
489 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
490 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
491 #endif
492 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
493 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
494 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
495 #endif
496 #endif
497
498 // const volatile:
499 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
500 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
501 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
502 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
503 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
504 #endif
505 #ifdef _MANAGED
506 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
507 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
508 #else
509 #ifndef _M_AMD64
510 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
511 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
512 #endif
513 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
514 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
515 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
516 #endif
517 #endif
518
519 // reference qualified:
520 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
521 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
522 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
523 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
524 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
525 #endif
526 #ifdef _MANAGED
527 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
528 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
529 #else
530 #ifndef _M_AMD64
531 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
532 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
533 #endif
534 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
535 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
536 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
537 #endif
538 #endif
539
540 // const:
541 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
542 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
543 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
544 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
545 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
546 #endif
547 #ifdef _MANAGED
548 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
549 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
550 #else
551 #ifndef _M_AMD64
552 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
553 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
554 #endif
555 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
556 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
557 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
558 #endif
559 #endif
560
561 // volatile:
562 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
563 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
564 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
565 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
566 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
567 #endif
568 #ifdef _MANAGED
569 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
570 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
571 #else
572 #ifndef _M_AMD64
573 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
574 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
575 #endif
576 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
577 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
578 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
579 #endif
580 #endif
581
582 // const volatile:
583 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
584 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
585 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
586 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
587 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
588 #endif
589 #ifdef _MANAGED
590 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
591 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
592 #else
593 #ifndef _M_AMD64
594 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
595 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
596 #endif
597 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
598 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
599 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
600 #endif
601 #endif
602
603 // rvalue reference qualified:
604 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
605 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
606 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
607 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
608 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
609 #endif
610 #ifdef _MANAGED
611 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
612 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
613 #else
614 #ifndef _M_AMD64
615 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
616 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
617 #endif
618 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
619 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
620 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
621 #endif
622 #endif
623
624 // const:
625 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
626 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
627 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
628 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
629 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
630 #endif
631 #ifdef _MANAGED
632 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
633 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
634 #else
635 #ifndef _M_AMD64
636 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
637 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
638 #endif
639 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
640 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
641 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
642 #endif
643 #endif
644
645 // volatile:
646 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
647 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
648 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
649 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
650 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
651 #endif
652 #ifdef _MANAGED
653 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
654 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
655 #else
656 #ifndef _M_AMD64
657 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
658 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
659 #endif
660 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
661 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
662 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
663 #endif
664 #endif
665
666 // const volatile:
667 #if !defined(_M_X64) && !defined(_M_CEE_SAFE) && !defined(_M_CEE_PURE)
668 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
669 struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
670 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
671 struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
672 #endif
673 #ifdef _MANAGED
674 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
675 struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
676 #else
677 #ifndef _M_AMD64
678 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
679 struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
680 #endif
681 #if defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64)
682 template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
683 struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
684 #endif
685 #endif
686
687 #endif // defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
688
689
690 #endif
691
692 #undef BOOST_TT_NOEXCEPT_DECL
693 #undef BOOST_TT_NOEXCEPT_PARAM
694 #undef BOOST_TT_DEF_CALL
695 }
696
697 #endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED