]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/type_traits/detail/is_function_cxx_11.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / 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