]> git.lyx.org Git - lyx.git/blob - 3rdparty/boost/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp
Update to boost 1.72
[lyx.git] / 3rdparty / 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 #ifdef __CLR_VER
113    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
114    struct is_member_function_pointer<Ret (__clrcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
115 #endif
116 #ifndef _M_AMD64
117    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
118    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
119 #ifndef __CLR_VER
120    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
121    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
122 #endif
123    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
124    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
125 #endif
126 #if !defined(__CLR_VER) && (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
131    // const:
132 #ifdef __CLR_VER
133    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
134    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
135 #endif
136 #ifndef _M_AMD64
137    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
138    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
139 #ifndef __CLR_VER
140    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
141    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
142 #endif
143    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
144    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
145 #endif
146 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
147    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
148    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
149 #endif
150
151    // volatile:
152 #ifdef __CLR_VER
153    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
154    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
155 #endif
156 #ifndef _M_AMD64
157    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
158    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
159 #ifndef __CLR_VER
160    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
161    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
162 #endif
163    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
164    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
165 #endif
166 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
167    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
168    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
169 #endif
170
171    // const volatile:
172 #ifdef __CLR_VER
173    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
174    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
175 #endif
176 #ifndef _M_AMD64
177    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
178    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
179 #ifndef __CLR_VER
180    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
181    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
182 #endif
183    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
184    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
185 #endif
186 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
187    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
188    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
189 #endif
190
191    // reference qualified:
192 #ifdef __CLR_VER
193    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
194    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
195 #endif
196 #ifndef _M_AMD64
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 #ifndef __CLR_VER
200    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
201    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
202 #endif
203    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
204    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
205 #endif
206 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
207    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
208    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
209 #endif
210
211    // const:
212 #ifdef __CLR_VER
213    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
214    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
215 #endif
216 #ifndef _M_AMD64
217    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
218    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
219 #ifndef __CLR_VER
220    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
221    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
222 #endif
223    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
224    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
225 #endif
226 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
227    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
228    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
229 #endif
230  
231    // volatile:
232 #ifdef __CLR_VER
233    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
234    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
235 #endif
236 #ifndef _M_AMD64
237    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
238    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
239 #ifndef __CLR_VER
240    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
241    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
242 #endif
243    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
244    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
245 #endif
246 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
247    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
248    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
249 #endif
250
251    // const volatile:
252 #ifdef __CLR_VER
253    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
254    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
255 #endif
256 #ifndef _M_AMD64
257    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
258    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
259 #ifndef __CLR_VER
260    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
261    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
262 #endif
263    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
264    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
265 #endif
266 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
267    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
268    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
269 #endif
270
271    // rvalue reference qualified:
272 #ifdef __CLR_VER
273    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
274    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
275 #endif
276 #ifndef _M_AMD64
277    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
278    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
279 #ifndef __CLR_VER
280    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
281    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
282 #endif
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 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
287    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
288    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
289 #endif
290
291    // const:
292 #ifdef __CLR_VER
293    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
294    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
295 #endif
296 #ifndef _M_AMD64
297    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
298    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
299 #ifndef __CLR_VER
300    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
301    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
302 #endif
303    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
304    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
305 #endif
306 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
307    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
308    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
309 #endif
310
311    // volatile:
312 #ifdef __CLR_VER
313    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
314    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
315 #endif
316 #ifndef _M_AMD64
317    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
318    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
319 #ifndef __CLR_VER
320    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
321    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
322 #endif
323    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
324    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
325 #endif
326 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
327    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
328    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
329 #endif
330  
331    // const volatile:
332 #ifdef __CLR_VER
333    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
334    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
335 #endif
336 #ifndef _M_AMD64
337    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
338    struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
339 #ifndef __CLR_VER
340    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
341    struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
342 #endif
343    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
344    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
345 #endif
346 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
347    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
348    struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
349 #endif
350 #endif
351
352
353 #if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM)  && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE)
354
355 #undef BOOST_TT_NOEXCEPT_DECL
356 #define BOOST_TT_NOEXCEPT_DECL noexcept
357
358    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
359    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
360    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
361    struct is_member_function_pointer<Ret(C::*)(Args..., ...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
362    // const qualified:
363    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
364    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
365    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
366    struct is_member_function_pointer<Ret(C::*)(Args..., ...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
367    // volatile:
368    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
369    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
370    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
371    struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
372    // const volatile
373    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
374    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
375    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
376    struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
377
378    // Reference qualified:
379
380    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
381    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
382    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
383    struct is_member_function_pointer<Ret(C::*)(Args..., ...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
384    // const qualified:
385    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
386    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
387    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
388    struct is_member_function_pointer<Ret(C::*)(Args..., ...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
389    // volatile:
390    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
391    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
392    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
393    struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
394    // const volatile
395    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
396    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
397    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
398    struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
399
400    // rvalue reference qualified:
401
402    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
403    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
404    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
405    struct is_member_function_pointer<Ret(C::*)(Args..., ...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
406    // const qualified:
407    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
408    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
409    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
410    struct is_member_function_pointer<Ret(C::*)(Args..., ...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
411    // volatile:
412    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
413    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
414    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
415    struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
416    // const volatile
417    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
418    struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
419    template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
420    struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
421
422 #if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
423 #ifdef __CLR_VER
424    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
425    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
426 #endif
427 #ifndef _M_AMD64
428    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
429    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
430 #ifndef __CLR_VER
431    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
432    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
433 #endif
434    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
435    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
436 #endif
437 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
438    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
439    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
440 #endif
441
442    // const:
443 #ifdef __CLR_VER
444    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
445    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
446 #endif
447 #ifndef _M_AMD64
448    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
449    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
450 #ifndef __CLR_VER
451    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
452    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
453 #endif
454    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
455    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
456 #endif
457 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
458    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
459    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
460 #endif
461
462    // volatile:
463 #ifdef __CLR_VER
464    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
465    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
466 #endif
467 #ifndef _M_AMD64
468    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
469    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
470 #ifndef __CLR_VER
471    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
472    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
473 #endif
474    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
475    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
476 #endif
477 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
478    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
479    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
480 #endif
481
482    // const volatile:
483 #ifdef __CLR_VER
484    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
485    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
486 #endif
487 #ifndef _M_AMD64
488    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
489    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
490 #ifndef __CLR_VER
491    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
492    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
493 #endif
494    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
495    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
496 #endif
497 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
498    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
499    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
500 #endif
501
502    // reference qualified:
503 #ifdef __CLR_VER
504    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
505    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
506 #endif
507 #ifndef _M_AMD64
508    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
509    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
510 #ifndef __CLR_VER
511    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
512    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
513 #endif
514    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
515    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
516 #endif
517 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
518    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
519    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
520 #endif
521
522    // const:
523 #ifdef __CLR_VER
524    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
525    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
526 #endif
527 #ifndef _M_AMD64
528    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
529    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
530 #ifndef __CLR_VER
531    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
532    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
533 #endif
534    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
535    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
536 #endif
537 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
538    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
539    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
540 #endif
541
542    // volatile:
543 #ifdef __CLR_VER
544    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
545    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
546 #endif
547 #ifndef _M_AMD64
548    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
549    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
550 #ifndef __CLR_VER
551    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
552    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
553 #endif
554    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
555    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
556 #endif
557 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
558    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
559    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
560 #endif
561
562    // const volatile:
563 #ifdef __CLR_VER
564    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
565    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
566 #endif
567 #ifndef _M_AMD64
568    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
569    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
570 #ifndef __CLR_VER
571    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
572    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
573 #endif
574    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
575    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
576 #endif
577 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
578    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
579    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
580 #endif
581
582    // rvalue reference qualified:
583 #ifdef __CLR_VER
584    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
585    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
586 #endif
587 #ifndef _M_AMD64
588    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
589    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
590 #ifndef __CLR_VER
591    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
592    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
593 #endif
594    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
595    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
596 #endif
597 #if !defined(__CLR_VER) && (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...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
600 #endif
601
602    // const:
603 #ifdef __CLR_VER
604    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
605    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
606 #endif
607 #ifndef _M_AMD64
608    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
609    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
610 #ifndef __CLR_VER
611    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
612    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
613 #endif
614    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
615    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
616 #endif
617 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
618    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
619    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
620 #endif
621
622    // volatile:
623 #ifdef __CLR_VER
624    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
625    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
626 #endif
627 #ifndef _M_AMD64
628    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
629    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
630 #ifndef __CLR_VER
631    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
632    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
633 #endif
634    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
635    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
636 #endif
637 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
638    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
639    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
640 #endif
641
642    // const volatile:
643 #ifdef __CLR_VER
644    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
645    struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
646
647 #endif
648 #ifndef _M_AMD64
649    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
650    struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
651 #ifndef __CLR_VER
652    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
653    struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
654 #endif
655    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
656    struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
657 #endif
658 #if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
659    template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
660    struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
661 #endif
662 #endif
663
664
665 #endif
666
667 #undef BOOST_TT_NOEXCEPT_DECL
668 #undef BOOST_TT_NOEXCEPT_PARAM
669 #undef BOOST_TT_DEF_CALL
670 }
671
672 #endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED