Go to the documentation of this file.
14 #if !(defined(_MSC_VER) && __cplusplus == 199711L) && !defined(__INTEL_COMPILER)
15 #if __cplusplus >= 201402L
17 #if __cplusplus >= 201703L
19 #if __cplusplus > 201703L
21 #if __cplusplus > 202002L
23 #if __cplusplus > 202302L
30 #elif defined(_MSC_VER) && __cplusplus == 199711L
33 #if _MSVC_LANG >= 201402L
35 #if _MSVC_LANG > 201402L && _MSC_VER >= 1910
37 #if _MSVC_LANG > 201703L && _MSC_VER >= 1910
39 #if _MSVC_LANG > 202002L && _MSC_VER >= 1922
47 #if defined(CLI11_CPP14)
48 #define CLI11_DEPRECATED(reason) [[deprecated(reason)]]
49 #elif defined(_MSC_VER)
50 #define CLI11_DEPRECATED(reason) __declspec(deprecated(reason))
52 #define CLI11_DEPRECATED(reason) __attribute__((deprecated(reason)))
56 #if !defined(CLI11_CPP17) || \
57 (defined(__GNUC__) && !defined(__llvm__) && !defined(__INTEL_COMPILER) && __GNUC__ < 10 && __GNUC__ > 4)
58 #define CLI11_NODISCARD
60 #define CLI11_NODISCARD [[nodiscard]]
64 #ifndef CLI11_USE_STATIC_RTTI
65 #if (defined(_HAS_STATIC_RTTI) && _HAS_STATIC_RTTI)
66 #define CLI11_USE_STATIC_RTTI 1
67 #elif defined(__cpp_rtti)
68 #if (defined(_CPPRTTI) && _CPPRTTI == 0)
69 #define CLI11_USE_STATIC_RTTI 1
71 #define CLI11_USE_STATIC_RTTI 0
73 #elif (defined(__GCC_RTTI) && __GXX_RTTI)
74 #define CLI11_USE_STATIC_RTTI 0
76 #define CLI11_USE_STATIC_RTTI 1
81 #if defined CLI11_CPP17 && defined __has_include && !defined CLI11_HAS_FILESYSTEM
82 #if __has_include(<filesystem>)
84 #if defined __MAC_OS_X_VERSION_MIN_REQUIRED && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500
85 #define CLI11_HAS_FILESYSTEM 0
86 #elif defined(__wasi__)
88 #define CLI11_HAS_FILESYSTEM 0
91 #if defined __cpp_lib_filesystem && __cpp_lib_filesystem >= 201703
92 #if defined _GLIBCXX_RELEASE && _GLIBCXX_RELEASE >= 9
93 #define CLI11_HAS_FILESYSTEM 1
94 #elif defined(__GLIBCXX__)
96 #define CLI11_HAS_FILESYSTEM 0
98 #define CLI11_HAS_FILESYSTEM 1
101 #define CLI11_HAS_FILESYSTEM 0
108 #if !defined(CLI11_CPP26) && !defined(CLI11_HAS_CODECVT)
109 #if defined(__GNUC__) && !defined(__llvm__) && !defined(__INTEL_COMPILER) && __GNUC__ < 5
110 #define CLI11_HAS_CODECVT 0
112 #define CLI11_HAS_CODECVT 1
116 #if defined(CLI11_HAS_CODECVT)
117 #if CLI11_HAS_CODECVT > 0
121 #define CLI11_HAS_CODECVT 0
126 #if defined(__GNUC__) // GCC or clang
127 #define CLI11_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")
128 #define CLI11_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")
130 #define CLI11_DIAGNOSTIC_IGNORE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
132 #elif defined(_MSC_VER)
133 #define CLI11_DIAGNOSTIC_PUSH __pragma(warning(push))
134 #define CLI11_DIAGNOSTIC_POP __pragma(warning(pop))
136 #define CLI11_DIAGNOSTIC_IGNORE_DEPRECATED __pragma(warning(disable : 4996))
139 #define CLI11_DIAGNOSTIC_PUSH
140 #define CLI11_DIAGNOSTIC_POP
142 #define CLI11_DIAGNOSTIC_IGNORE_DEPRECATED
150 #define CLI11_INLINE inline