simdjson  3.11.0
Ridiculously Fast JSON
compiler_check.h
1 #ifndef SIMDJSON_COMPILER_CHECK_H
2 #define SIMDJSON_COMPILER_CHECK_H
3 
4 #ifndef __cplusplus
5 #error simdjson requires a C++ compiler
6 #endif
7 
8 #ifndef SIMDJSON_CPLUSPLUS
9 #if defined(_MSVC_LANG) && !defined(__clang__)
10 #define SIMDJSON_CPLUSPLUS (_MSC_VER == 1900 ? 201103L : _MSVC_LANG)
11 #else
12 #define SIMDJSON_CPLUSPLUS __cplusplus
13 #endif
14 #endif
15 
16 // C++ 23
17 #if !defined(SIMDJSON_CPLUSPLUS23) && (SIMDJSON_CPLUSPLUS >= 202302L)
18 #define SIMDJSON_CPLUSPLUS23 1
19 #endif
20 
21 // C++ 20
22 #if !defined(SIMDJSON_CPLUSPLUS20) && (SIMDJSON_CPLUSPLUS >= 202002L)
23 #define SIMDJSON_CPLUSPLUS20 1
24 #endif
25 
26 // C++ 17
27 #if !defined(SIMDJSON_CPLUSPLUS17) && (SIMDJSON_CPLUSPLUS >= 201703L)
28 #define SIMDJSON_CPLUSPLUS17 1
29 #endif
30 
31 // C++ 14
32 #if !defined(SIMDJSON_CPLUSPLUS14) && (SIMDJSON_CPLUSPLUS >= 201402L)
33 #define SIMDJSON_CPLUSPLUS14 1
34 #endif
35 
36 // C++ 11
37 #if !defined(SIMDJSON_CPLUSPLUS11) && (SIMDJSON_CPLUSPLUS >= 201103L)
38 #define SIMDJSON_CPLUSPLUS11 1
39 #endif
40 
41 #ifndef SIMDJSON_CPLUSPLUS11
42 #error simdjson requires a compiler compliant with the C++11 standard
43 #endif
44 
45 #ifndef SIMDJSON_IF_CONSTEXPR
46 #if SIMDJSON_CPLUSPLUS17
47 #define SIMDJSON_IF_CONSTEXPR if constexpr
48 #else
49 #define SIMDJSON_IF_CONSTEXPR if
50 #endif
51 #endif
52 
53 #ifdef __has_include
54 #if __has_include(<version>)
55 #include <version>
56 #endif
57 #endif
58 
59 #ifdef __cpp_concepts
60 #include <utility>
61 #define SIMDJSON_SUPPORTS_DESERIALIZATION 1
62 #else // __cpp_concepts
63 #define SIMDJSON_SUPPORTS_DESERIALIZATION 0
64 #endif
65 #endif // SIMDJSON_COMPILER_CHECK_H