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