29 #ifndef CRYPTOPP_CONFIG_CXX_H
30 #define CRYPTOPP_CONFIG_CXX_H
42 #if (defined(CRYPTOPP_MSC_VERSION) && CRYPTOPP_MSC_VERSION <= 1300) || \
43 defined(__MWERKS__) || \
44 (defined(_STLPORT_VERSION) && ((_STLPORT_VERSION < 0x450) || defined(_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT)) || \
45 (__cplusplus >= 202002L))
46 #define CRYPTOPP_DISABLE_UNCAUGHT_EXCEPTION
50 #ifndef CRYPTOPP_DISABLE_UNCAUGHT_EXCEPTION
51 # define CRYPTOPP_UNCAUGHT_EXCEPTION_AVAILABLE 1
52 # define CRYPTOPP_CXX98_UNCAUGHT_EXCEPTION 1
57 # define __has_feature(x) 0
61 #if ((CRYPTOPP_MSC_VERSION >= 1600) || (__cplusplus >= 201103L)) && !defined(_STLPORT_VERSION)
62 # define CRYPTOPP_CXX11 1
71 #if defined(__APPLE__) && defined(__clang__)
72 # if !(defined(__has_include) && __has_include(<forward_list>))
73 # undef CRYPTOPP_CXX11
78 #if defined(CRYPTOPP_CXX11) && !defined(CRYPTOPP_NO_CXX14)
79 # if ((CRYPTOPP_MSC_VERSION >= 1900) || (__cplusplus >= 201402L)) && !defined(_STLPORT_VERSION)
80 # define CRYPTOPP_CXX14 1
85 #if defined(CRYPTOPP_CXX14) && !defined(CRYPTOPP_NO_CXX17)
86 # if ((CRYPTOPP_MSC_VERSION >= 1900) || (__cplusplus >= 201703L)) && !defined(_STLPORT_VERSION)
87 # define CRYPTOPP_CXX17 1
93 #if defined(CRYPTOPP_CXX11)
96 #if (CRYPTOPP_MSC_VERSION >= 1700) || __has_feature(cxx_atomic) || \
97 (__INTEL_COMPILER >= 1300) || (CRYPTOPP_GCC_VERSION >= 40400) || (__SUNPRO_CC >= 0x5140)
98 # define CRYPTOPP_CXX11_ATOMIC 1
103 #if (CRYPTOPP_MSC_VERSION >= 1700) || (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || \
104 (CRYPTOPP_APPLE_CLANG_VERSION >= 50000) || (__INTEL_COMPILER >= 1200) || \
105 (CRYPTOPP_GCC_VERSION >= 40400) || (__SUNPRO_CC >= 0x5130)
112 # if !defined(__GLIBCXX__) || defined(_GLIBCXX_HAS_GTHREADS)
113 # define CRYPTOPP_CXX11_SYNCHRONIZATION 1
122 #if (__cpp_threadsafe_static_init >= 200806) || \
123 (CRYPTOPP_MSC_VERSION >= 1900) && ((WINVER >= 0x0600) || (_WIN32_WINNT >= 0x0600)) || \
124 (CRYPTOPP_LLVM_CLANG_VERSION >= 20900) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40000) || \
125 (__INTEL_COMPILER >= 1110) || (CRYPTOPP_GCC_VERSION >= 40300) || (__SUNPRO_CC >= 0x5130)
126 # define CRYPTOPP_CXX11_STATIC_INIT 1
130 #if (CRYPTOPP_MSC_VERSION >= 1800) || (CRYPTOPP_LLVM_CLANG_VERSION >= 20900) || \
131 (CRYPTOPP_APPLE_CLANG_VERSION >= 40000) || (__INTEL_COMPILER >= 1210) || \
132 (CRYPTOPP_GCC_VERSION >= 40300) || (__SUNPRO_CC >= 0x5130)
133 # define CRYPTOPP_CXX11_DELETED_FUNCTIONS 1
137 #if (CRYPTOPP_MSC_VERSION >= 1900) || __has_feature(cxx_alignas) || \
138 (__INTEL_COMPILER >= 1500) || (CRYPTOPP_GCC_VERSION >= 40800) || (__SUNPRO_CC >= 0x5130)
139 # define CRYPTOPP_CXX11_ALIGNAS 1
143 #if (CRYPTOPP_MSC_VERSION >= 1900) || __has_feature(cxx_alignof) || \
144 (__INTEL_COMPILER >= 1500) || (CRYPTOPP_GCC_VERSION >= 40500) || (__SUNPRO_CC >= 0x5130)
145 # define CRYPTOPP_CXX11_ALIGNOF 1
149 #if (CRYPTOPP_MSC_VERSION >= 1800) || (CRYPTOPP_LLVM_CLANG_VERSION >= 30100) || \
150 (CRYPTOPP_APPLE_CLANG_VERSION >= 40000) || (__INTEL_COMPILER >= 1400) || \
151 (CRYPTOPP_GCC_VERSION >= 40400) || (__SUNPRO_CC >= 0x5130)
152 # define CRYPTOPP_CXX11_INITIALIZER_LIST 1
156 #if (CRYPTOPP_MSC_VERSION >= 1700) || __has_feature(cxx_lambdas) || \
157 (__INTEL_COMPILER >= 1200) || (CRYPTOPP_GCC_VERSION >= 40900) || (__SUNPRO_CC >= 0x5140)
158 # define CRYPTOPP_CXX11_LAMBDA 1
162 #if (CRYPTOPP_MSC_VERSION >= 1900) || __has_feature(cxx_noexcept) || \
163 (__INTEL_COMPILER >= 1400) || (CRYPTOPP_GCC_VERSION >= 40600) || (__SUNPRO_CC >= 0x5130)
164 # define CRYPTOPP_CXX11_NOEXCEPT 1
168 #if (__cpp_variadic_templates >= 200704) || __has_feature(cxx_variadic_templates) || \
169 (CRYPTOPP_MSC_VERSION >= 1800) || (__INTEL_COMPILER >= 1210) || \
170 (CRYPTOPP_GCC_VERSION >= 40300) || (__SUNPRO_CC >= 0x5130)
171 # define CRYPTOPP_CXX11_VARIADIC_TEMPLATES 1
176 #if (__cpp_constexpr >= 200704) || __has_feature(cxx_constexpr) || \
177 (CRYPTOPP_MSC_VERSION >= 1900) || (__INTEL_COMPILER >= 1600) || \
178 (CRYPTOPP_GCC_VERSION >= 40600) || (__SUNPRO_CC >= 0x5130)
179 # define CRYPTOPP_CXX11_CONSTEXPR 1
184 #if (CRYPTOPP_MSC_VERSION >= 1700) || __has_feature(cxx_strong_enums) || \
185 (__INTEL_COMPILER >= 1400) || (CRYPTOPP_GCC_VERSION >= 40400) || (__SUNPRO_CC >= 0x5120)
186 # define CRYPTOPP_CXX11_STRONG_ENUM 1
190 #if (CRYPTOPP_MSC_VERSION >= 1600) || __has_feature(cxx_nullptr) || \
191 (__INTEL_COMPILER >= 1000) || (CRYPTOPP_GCC_VERSION >= 40600) || \
192 (__SUNPRO_CC >= 0x5130) || defined(__IBMCPP_NULLPTR)
193 # define CRYPTOPP_CXX11_NULLPTR 1
200 #if defined(CRYPTOPP_CXX14)
204 #if (__cpp_static_assert >= 201411)
205 # define CRYPTOPP_CXX17_STATIC_ASSERT 1
213 #if defined(CRYPTOPP_CXX17)
220 #if defined(__clang__)
221 # if __EXCEPTIONS && __has_feature(cxx_exceptions)
222 # if __cpp_lib_uncaught_exceptions >= 201411L
223 # define CRYPTOPP_CXX17_UNCAUGHT_EXCEPTIONS 1
226 #elif (CRYPTOPP_MSC_VERSION >= 1900) || (__INTEL_COMPILER >= 1800) || \
227 (CRYPTOPP_GCC_VERSION >= 60000) || (__cpp_lib_uncaught_exceptions >= 201411L)
228 # define CRYPTOPP_CXX17_UNCAUGHT_EXCEPTIONS 1
235 #if defined(CRYPTOPP_CXX11_NOEXCEPT)
236 # define CRYPTOPP_THROW noexcept(false)
237 # define CRYPTOPP_NO_THROW noexcept(true)
239 # define CRYPTOPP_THROW
240 # define CRYPTOPP_NO_THROW
244 #if defined(CRYPTOPP_CXX11_NULLPTR) && !defined(NULLPTR)
245 # define NULLPTR nullptr
246 #elif !defined(NULLPTR)
247 # define NULLPTR NULL
Library configuration file.
Library configuration file.
Library configuration file.