vSMC
vSMC: Scalable Monte Carlo
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
include
vsmc
internal
compiler
msvc.hpp
Go to the documentation of this file.
1
//============================================================================
2
// vSMC/include/vsmc/internal/compiler/msvc.hpp
3
//----------------------------------------------------------------------------
4
// vSMC: Scalable Monte Carlo
5
//----------------------------------------------------------------------------
6
// Copyright (c) 2013,2014, Yan Zhou
7
// All rights reserved.
8
//
9
// Redistribution and use in source and binary forms, with or without
10
// modification, are permitted provided that the following conditions are met:
11
//
12
// Redistributions of source code must retain the above copyright notice,
13
// this list of conditions and the following disclaimer.
14
//
15
// Redistributions in binary form must reproduce the above copyright notice,
16
// this list of conditions and the following disclaimer in the documentation
17
// and/or other materials provided with the distribution.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS
20
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
// POSSIBILITY OF SUCH DAMAGE.
30
//============================================================================
31
32
#ifndef VSMC_INTERNAL_COMPILER_MSVC_HPP
33
#define VSMC_INTERNAL_COMPILER_MSVC_HPP
34
35
#define VSMC_MSVC_NONEXIST 0xFFFFFFFFUL
36
37
#define VSMC_MSVC_VERSION _MSC_VER
38
39
#if VSMC_MSVC_VERSION >= 1600
40
#ifndef VSMC_HAS_CXX11_LONG_LONG
41
#define VSMC_HAS_CXX11_LONG_LONG 1
42
#endif
43
#endif
44
45
// C++11 language features
46
47
#if VSMC_MSVC_VERSION >= VSMC_MSVC_NONEXIST
48
#ifndef VSMC_HAS_CXX11_ACCESS_CONTROL_SFINAE
49
#define VSMC_HAS_CXX11_ACCESS_CONTROL_SFINAE 1
50
#endif
51
#endif
52
53
#if VSMC_MSVC_VERSION >= 1800
54
#ifndef VSMC_HAS_CXX11_ALIAS_TEMPLATES
55
#define VSMC_HAS_CXX11_ALIAS_TEMPLATES 1
56
#endif
57
#endif
58
59
#if VSMC_MSVC_VERSION >= 1900
60
#ifndef VSMC_HAS_CXX11_ALIGNAS
61
#define VSMC_HAS_CXX11_ALIGNAS 1
62
#endif
63
#endif
64
65
#if VSMC_MSVC_VERSION >= VSMC_MSVC_NONEXIST
66
#ifndef VSMC_HAS_CXX11_ATTRIBUTES
67
#define VSMC_HAS_CXX11_ATTRIBUTES 1
68
#endif
69
#endif
70
71
#if VSMC_MSVC_VERSION >= 1600
72
#ifndef VSMC_HAS_CXX11_AUTO_TYPE
73
#define VSMC_HAS_CXX11_AUTO_TYPE 1
74
#endif
75
#endif
76
77
#if VSMC_MSVC_VERSION >= 1900
78
#ifndef VSMC_HAS_CXX11_CONSTEXPR
79
#define VSMC_HAS_CXX11_CONSTEXPR 1
80
#endif
81
#endif
82
83
#if VSMC_MSVC_VERSION >= 1600
84
#ifndef VSMC_HAS_CXX11_DECLTYPE
85
#define VSMC_HAS_CXX11_DECLTYPE 1
86
#endif
87
#endif
88
89
#if VSMC_MSVC_VERSION >= 1800
90
#ifndef VSMC_HAS_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS
91
#define VSMC_HAS_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS 1
92
#endif
93
#endif
94
95
#if VSMC_MSVC_VERSION >= 1900
96
#ifndef VSMC_HAS_CXX11_DEFAULTED_FUNCTIONS
97
#define VSMC_HAS_CXX11_DEFAULTED_FUNCTIONS 1
98
#endif
99
#endif
100
101
#if VSMC_MSVC_VERSION >= 1800
102
#ifndef VSMC_HAS_CXX11_DELEGATING_CONSTRUCTORS
103
#define VSMC_HAS_CXX11_DELEGATING_CONSTRUCTORS 1
104
#endif
105
#endif
106
107
#if VSMC_MSVC_VERSION >= 1900
108
#ifndef VSMC_HAS_CXX11_DELETED_FUNCTIONS
109
#define VSMC_HAS_CXX11_DELETED_FUNCTIONS 1
110
#endif
111
#endif
112
113
#if VSMC_MSVC_VERSION >= 1800
114
#ifndef VSMC_HAS_CXX11_EXPLICIT_CONVERSIONS
115
#define VSMC_HAS_CXX11_EXPLICIT_CONVERSIONS 1
116
#endif
117
#endif
118
119
#if VSMC_MSVC_VERSION >= 1800
120
#ifndef VSMC_HAS_CXX11_GENERALIZED_INITIALIZERS
121
#define VSMC_HAS_CXX11_GENERALIZED_INITIALIZERS 1
122
#endif
123
#endif
124
125
#if VSMC_MSVC_VERSION >= 1900
126
#ifndef VSMC_HAS_CXX11_IMPLICIT_MOVES
127
#define VSMC_HAS_CXX11_IMPLICIT_MOVES 1
128
#endif
129
#endif
130
131
#if VSMC_MSVC_VERSION >= 1900
132
#ifndef VSMC_HAS_CXX11_INHERITING_CONSTRUCTORS
133
#define VSMC_HAS_CXX11_INHERITING_CONSTRUCTORS 1
134
#endif
135
#endif
136
137
#if VSMC_MSVC_VERSION >= 1900
138
#ifndef VSMC_HAS_CXX11_INLINE_NAMESPACES
139
#define VSMC_HAS_CXX11_INLINE_NAMESPACES 1
140
#endif
141
#endif
142
143
#if VSMC_MSVC_VERSION >= 1600
144
#ifndef VSMC_HAS_CXX11_LAMBDAS
145
#define VSMC_HAS_CXX11_LAMBDAS 1
146
#endif
147
#endif
148
149
#if VSMC_MSVC_VERSION >= 1600
150
#ifndef VSMC_HAS_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
151
#define VSMC_HAS_CXX11_LOCAL_TYPE_TEMPLATE_ARGS 1
152
#endif
153
#endif
154
155
#if VSMC_MSVC_VERSION >= 1900
156
#ifndef VSMC_HAS_CXX11_NOEXCEPT
157
#define VSMC_HAS_CXX11_NOEXCEPT 1
158
#endif
159
#endif
160
161
#if VSMC_MSVC_VERSION >= 1800
162
#ifndef VSMC_HAS_CXX11_NONSTATIC_MEMBER_INIT
163
#define VSMC_HAS_CXX11_NONSTATIC_MEMBER_INIT 1
164
#endif
165
#endif
166
167
#if VSMC_MSVC_VERSION >= 1600
168
#ifndef VSMC_HAS_CXX11_NULLPTR
169
#define VSMC_HAS_CXX11_NULLPTR 1
170
#endif
171
#endif
172
173
#if VSMC_MSVC_VERSION >= 1700
174
#ifndef VSMC_HAS_CXX11_OVERRIDE_CONTROL
175
#define VSMC_HAS_CXX11_OVERRIDE_CONTROL 1
176
#endif
177
#endif
178
179
#if VSMC_MSVC_VERSION >= 1700
180
#ifndef VSMC_HAS_CXX11_RANGE_FOR
181
#define VSMC_HAS_CXX11_RANGE_FOR 1
182
#endif
183
#endif
184
185
#if VSMC_MSVC_VERSION >= 1800
186
#ifndef VSMC_HAS_CXX11_RAW_STRING_LITERALS
187
#define VSMC_HAS_CXX11_RAW_STRING_LITERALS 1
188
#endif
189
#endif
190
191
#if VSMC_MSVC_VERSION >= 1900
192
#ifndef VSMC_HAS_CXX11_REFERENCE_QUALIFIED_FUNCTIONS
193
#define VSMC_HAS_CXX11_REFERENCE_QUALIFIED_FUNCTIONS 1
194
#endif
195
#endif
196
197
#if VSMC_MSVC_VERSION >= 1600
198
#ifndef VSMC_HAS_CXX11_RVALUE_REFERENCES
199
#define VSMC_HAS_CXX11_RVALUE_REFERENCES 1
200
#endif
201
#endif
202
203
#if VSMC_MSVC_VERSION >= 1600
204
#ifndef VSMC_HAS_CXX11_STATIC_ASSERT
205
#define VSMC_HAS_CXX11_STATIC_ASSERT 1
206
#endif
207
#endif
208
209
#if VSMC_MSVC_VERSION >= 1700
210
#ifndef VSMC_HAS_CXX11_STRONG_ENUMS
211
#define VSMC_HAS_CXX11_STRONG_ENUMS 1
212
#endif
213
#endif
214
215
#if VSMC_MSVC_VERSION >= 1900
216
#ifndef VSMC_HAS_CXX11_THREAD_LOCAL
217
#define VSMC_HAS_CXX11_THREAD_LOCAL 1
218
#endif
219
#endif
220
221
#if VSMC_MSVC_VERSION >= 1600
222
#ifndef VSMC_HAS_CXX11_TRAILING_RETURN
223
#define VSMC_HAS_CXX11_TRAILING_RETURN 1
224
#endif
225
#endif
226
227
#if VSMC_MSVC_VERSION >= 1900
228
#ifndef VSMC_HAS_CXX11_UNICODE_LITERALS
229
#define VSMC_HAS_CXX11_UNICODE_LITERALS 1
230
#endif
231
#endif
232
233
#if VSMC_MSVC_VERSION >= 1900
234
#ifndef VSMC_HAS_CXX11_UNRESTRICTED_UNIONS
235
#define VSMC_HAS_CXX11_UNRESTRICTED_UNIONS 1
236
#endif
237
#endif
238
239
#if VSMC_MSVC_VERSION >= 1900
240
#ifndef VSMC_HAS_CXX11_USER_LITERALS
241
#define VSMC_HAS_CXX11_USER_LITERALS 1
242
#endif
243
#endif
244
245
#if VSMC_MSVC_VERSION >= 1800
246
#ifndef VSMC_HAS_CXX11_VARIADIC_TEMPLATES
247
#define VSMC_HAS_CXX11_VARIADIC_TEMPLATES 1
248
#endif
249
#endif
250
251
// C++11 library features
252
253
#if VSMC_MSVC_VERSION >= 1600
254
#ifndef VSMC_HAS_CXX11LIB_ALGORITHM
255
#define VSMC_HAS_CXX11LIB_ALGORITHM 1
256
#endif
257
#endif
258
259
#if VSMC_MSVC_VERSION >= 1900
260
#ifndef VSMC_HAS_CXX11LIB_CHRONO
261
#define VSMC_HAS_CXX11LIB_CHRONO 1
262
#endif
263
#endif
264
265
#if VSMC_MSVC_VERSION >= 1800
266
#ifndef VSMC_HAS_CXX11LIB_CMATH
267
#define VSMC_HAS_CXX11LIB_CMATH 1
268
#endif
269
#endif
270
271
#if VSMC_MSVC_VERSION >= 1700
272
#ifndef VSMC_HAS_CXX11LIB_FUNCTIONAL
273
#define VSMC_HAS_CXX11LIB_FUNCTIONAL 1
274
#endif
275
#endif
276
277
#if VSMC_MSVC_VERSION >= 1700
278
#ifndef VSMC_HAS_CXX11LIB_FUTURE
279
#define VSMC_HAS_CXX11LIB_FUTURE 1
280
#endif
281
#endif
282
283
#if VSMC_MSVC_VERSION >= 1800
284
#ifndef VSMC_HAS_CXX11LIB_INITIALIZER_LIST
285
#define VSMC_HAS_CXX11LIB_INITIALIZER_LIST 1
286
#endif
287
#endif
288
289
#if VSMC_MSVC_VERSION >= 1700
290
#ifndef VSMC_HAS_CXX11LIB_MUTEX
291
#define VSMC_HAS_CXX11LIB_MUTEX 1
292
#endif
293
#endif
294
295
#if VSMC_MSVC_VERSION >= 1800
296
#ifndef VSMC_HAS_CXX11LIB_RANDOM
297
#define VSMC_HAS_CXX11LIB_RANDOM 1
298
#endif
299
#endif
300
301
#if VSMC_MSVC_VERSION >= 1800
302
#ifndef VSMC_HAS_CXX11LIB_THREAD
303
#define VSMC_HAS_CXX11LIB_THREAD 1
304
#endif
305
#endif
306
307
#if VSMC_MSVC_VERSION >= 1800
308
#ifndef VSMC_HAS_CXX11LIB_TUPLE
309
#define VSMC_HAS_CXX11LIB_TUPLE 1
310
#endif
311
#endif
312
313
// C++14 language features
314
315
#if VSMC_MSVC_VERSION >= VSMC_MSVC_NONEXIST
316
#ifndef VSMC_HAS_CXX14_AGGREGATE_NSDMI
317
#define VSMC_HAS_CXX14_AGGREGATE_NSDMI 1
318
#endif
319
#endif
320
321
#if VSMC_MSVC_VERSION >= 1900
322
#ifndef VSMC_HAS_CXX14_BINARY_LITERALS
323
#define VSMC_HAS_CXX14_BINARY_LITERALS 1
324
#endif
325
#endif
326
327
#if VSMC_MSVC_VERSION >= VSMC_MSVC_NONEXIST
328
#ifndef VSMC_HAS_CXX14_CONTEXTUAL_CONVERSIONS
329
#define VSMC_HAS_CXX14_CONTEXTUAL_CONVERSIONS 1
330
#endif
331
#endif
332
333
#if VSMC_MSVC_VERSION >= 1900
334
#ifndef VSMC_HAS_CXX14_DECLTYPE_AUTO
335
#define VSMC_HAS_CXX14_DECLTYPE_AUTO 1
336
#endif
337
#endif
338
339
#if VSMC_MSVC_VERSION >= VSMC_MSVC_NONEXIST
340
#ifndef VSMC_HAS_CXX14_DIGIT_SEPERATORS
341
#define VSMC_HAS_CXX14_DIGIT_SEPERATORS 1
342
#endif
343
#endif
344
345
#if VSMC_MSVC_VERSION >= 1900
346
#ifndef VSMC_HAS_CXX14_GENERIC_LAMBDAS
347
#define VSMC_HAS_CXX14_GENERIC_LAMBDAS 1
348
#endif
349
#endif
350
351
#if VSMC_MSVC_VERSION >= 1900
352
#ifndef VSMC_HAS_CXX14_INIT_CAPTURES
353
#define VSMC_HAS_CXX14_INIT_CAPTURES 1
354
#endif
355
#endif
356
357
#if VSMC_MSVC_VERSION >= VSMC_NONEXIST
358
#ifndef VSMC_HAS_CXX14_RELAXED_CONSTEXPR
359
#define VSMC_HAS_CXX14_RELAXED_CONSTEXPR 1
360
#endif
361
#endif
362
363
#if VSMC_MSVC_VERSION >= 1900
364
#ifndef VSMC_HAS_CXX14_RETURN_TYPE_DEDUCTION
365
#define VSMC_HAS_CXX14_RETURN_TYPE_DEDUCTION 1
366
#endif
367
#endif
368
369
#if VSMC_MSVC_VERSION >= VSMC_MSVC_NONEXIST
370
#ifndef VSMC_HAS_CXX14_RUNTIME_SIZED_ARRAYS
371
#define VSMC_HAS_CXX14_RUNTIME_SIZED_ARRAYS 1
372
#endif
373
#endif
374
375
#if VSMC_MSVC_VERSION >= VSMC_MSVC_NONEXIST
376
#ifndef VSMC_HAS_CXX14_VARIABLE_TEMPLATES
377
#define VSMC_HAS_CXX14_VARIABLE_TEMPLATES 1
378
#endif
379
#endif
380
381
// C99 library features
382
383
#if VSMC_MSVC_VERSION >= 1800
384
#ifndef VSMC_HAS_C99LIB_MATH
385
#define VSMC_HAS_C99LIB_MATH 1
386
#endif
387
#endif
388
389
// Compiler features
390
391
#ifndef VSMC_INT64
392
#define VSMC_INT64 __int64
393
#endif
394
395
#ifndef VSMC_STRONG_INLINE
396
#define VSMC_STRONG_INLINE __forceinline
397
#endif
398
399
// Target features
400
401
#if _M_IX86_FP == 2 || defined(__AVX__)
402
#ifndef VSMC_HAS_SSE2
403
#define VSMC_HAS_SSE2 1
404
#endif
405
#endif
406
407
// Parallelization features
408
409
#if VSMC_MSVC_VERSION >= 1700
410
#ifndef VSMC_HAS_PPL
411
#define VSMC_HAS_PPL 1
412
#endif
413
#endif
414
415
#ifdef _OPENMP
416
#ifndef VSMC_HAS_OMP
417
#define VSMC_HAS_OMP 1
418
#endif
419
#endif
420
421
#endif // VSMC_INTERNAL_COMPILER_MSVC_HPP
Generated by
1.8.9.1