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).
8 // See http://www.boost.org/libs/type_traits for most recent version including documentation.
11 #ifndef BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED
12 #define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED
14 #include <boost/type_traits/integral_constant.hpp>
19 #define BOOST_TT_DEF_CALL __thiscall
21 #define BOOST_TT_DEF_CALL
26 struct is_member_function_pointer : public false_type {};
28 struct is_member_function_pointer<T const> : public is_member_function_pointer<T> {};
30 struct is_member_function_pointer<T volatile> : public is_member_function_pointer<T> {};
32 struct is_member_function_pointer<T const volatile> : public is_member_function_pointer<T> {};
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)
43 #define BOOST_TT_NOEXCEPT_PARAM
44 #define BOOST_TT_NOEXCEPT_DECL
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 {};
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 {};
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 {};
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 {};
67 // Reference qualified:
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 {};
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 {};
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 {};
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 {};
89 // rvalue reference qualified:
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
366 #if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM) && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE)
368 #undef BOOST_TT_NOEXCEPT_DECL
369 #define BOOST_TT_NOEXCEPT_DECL noexcept
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 {};
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 {};
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 {};
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 {};
391 // Reference qualified:
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 {};
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 {};
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 {};
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 {};
413 // rvalue reference qualified:
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
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 {};
687 #endif // defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
692 #undef BOOST_TT_NOEXCEPT_DECL
693 #undef BOOST_TT_NOEXCEPT_PARAM
694 #undef BOOST_TT_DEF_CALL
697 #endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED