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