]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // (C) Copyright John Maddock 2001 - 2003. |
2 | // (C) Copyright Jens Maurer 2001. | |
3 | // (C) Copyright Peter Dimov 2001. | |
4 | // (C) Copyright David Abrahams 2002. | |
5 | // (C) Copyright Guillaume Melquiond 2003. | |
6 | // Use, modification and distribution are subject to the | |
7 | // Boost Software License, Version 1.0. (See accompanying file | |
8 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
9 | ||
10 | // See http://www.boost.org for most recent version. | |
11 | ||
12 | // Dinkumware standard library config: | |
13 | ||
14 | #if !defined(_YVALS) && !defined(_CPPLIB_VER) | |
15 | #include <boost/config/no_tr1/utility.hpp> | |
16 | #if !defined(_YVALS) && !defined(_CPPLIB_VER) | |
17 | #error This is not the Dinkumware lib! | |
18 | #endif | |
19 | #endif | |
20 | ||
21 | ||
22 | #if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306) | |
23 | // full dinkumware 3.06 and above | |
24 | // fully conforming provided the compiler supports it: | |
20effc67 | 25 | # if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(BOOST_BORLANDC) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h |
7c673cae FG |
26 | # define BOOST_NO_STDC_NAMESPACE |
27 | # endif | |
28 | # if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC) | |
29 | # define BOOST_NO_STD_ALLOCATOR | |
30 | # endif | |
31 | # define BOOST_HAS_PARTIAL_STD_ALLOCATOR | |
32 | # if defined(BOOST_MSVC) && (BOOST_MSVC < 1300) | |
33 | // if this lib version is set up for vc6 then there is no std::use_facet: | |
34 | # define BOOST_NO_STD_USE_FACET | |
35 | # define BOOST_HAS_TWO_ARG_USE_FACET | |
36 | // C lib functions aren't in namespace std either: | |
37 | # define BOOST_NO_STDC_NAMESPACE | |
38 | // and nor is <exception> | |
39 | # define BOOST_NO_EXCEPTION_STD_NAMESPACE | |
40 | # endif | |
41 | // There's no numeric_limits<long long> support unless _LONGLONG is defined: | |
42 | # if !defined(_LONGLONG) && (_CPPLIB_VER <= 310) | |
43 | # define BOOST_NO_MS_INT64_NUMERIC_LIMITS | |
44 | # endif | |
45 | // 3.06 appears to have (non-sgi versions of) <hash_set> & <hash_map>, | |
46 | // and no <slist> at all | |
47 | #else | |
48 | # define BOOST_MSVC_STD_ITERATOR 1 | |
49 | # define BOOST_NO_STD_ITERATOR | |
50 | # define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS | |
51 | # define BOOST_NO_STD_ALLOCATOR | |
52 | # define BOOST_NO_STDC_NAMESPACE | |
53 | # define BOOST_NO_STD_USE_FACET | |
54 | # define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN | |
55 | # define BOOST_HAS_MACRO_USE_FACET | |
56 | # ifndef _CPPLIB_VER | |
57 | // Updated Dinkum library defines this, and provides | |
58 | // its own min and max definitions, as does MTA version. | |
59 | # ifndef __MTA__ | |
60 | # define BOOST_NO_STD_MIN_MAX | |
61 | # endif | |
62 | # define BOOST_NO_MS_INT64_NUMERIC_LIMITS | |
63 | # endif | |
64 | #endif | |
65 | ||
66 | // | |
67 | // std extension namespace is stdext for vc7.1 and later, | |
68 | // the same applies to other compilers that sit on top | |
69 | // of vc7.1 (Intel and Comeau): | |
70 | // | |
20effc67 | 71 | #if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(BOOST_BORLANDC) |
7c673cae FG |
72 | # define BOOST_STD_EXTENSION_NAMESPACE stdext |
73 | #endif | |
74 | ||
75 | ||
20effc67 | 76 | #if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(BOOST_BORLANDC)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306) |
7c673cae FG |
77 | // if we're using a dinkum lib that's |
78 | // been configured for VC6/7 then there is | |
79 | // no iterator traits (true even for icl) | |
80 | # define BOOST_NO_STD_ITERATOR_TRAITS | |
81 | #endif | |
82 | ||
83 | #if defined(__ICL) && (__ICL < 800) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310) | |
84 | // Intel C++ chokes over any non-trivial use of <locale> | |
85 | // this may be an overly restrictive define, but regex fails without it: | |
86 | # define BOOST_NO_STD_LOCALE | |
87 | #endif | |
88 | ||
20effc67 | 89 | #if ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER))) && (_MSC_VER < 1800) |
7c673cae FG |
90 | // Fix for VC++ 8.0 on up ( I do not have a previous version to test ) |
91 | // or clang-cl. If exceptions are off you must manually include the | |
92 | // <exception> header before including the <typeinfo> header. Admittedly | |
93 | // trying to use Boost libraries or the standard C++ libraries without | |
94 | // exception support is not suggested but currently clang-cl ( v 3.4 ) | |
95 | // does not support exceptions and must be compiled with exceptions off. | |
20effc67 | 96 | #if !_HAS_EXCEPTIONS |
7c673cae FG |
97 | #include <exception> |
98 | #endif | |
99 | #include <typeinfo> | |
20effc67 | 100 | #if !_HAS_EXCEPTIONS |
7c673cae FG |
101 | # define BOOST_NO_STD_TYPEINFO |
102 | #endif | |
f67539c2 | 103 | #endif |
20effc67 TL |
104 | #if defined(__ghs__) && !_HAS_NAMESPACE |
105 | # define BOOST_NO_STD_TYPEINFO | |
106 | #endif | |
7c673cae FG |
107 | |
108 | // C++0x headers implemented in 520 (as shipped by Microsoft) | |
109 | // | |
110 | #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520 | |
111 | # define BOOST_NO_CXX11_HDR_ARRAY | |
112 | # define BOOST_NO_CXX11_HDR_CODECVT | |
113 | # define BOOST_NO_CXX11_HDR_FORWARD_LIST | |
114 | # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST | |
115 | # define BOOST_NO_CXX11_HDR_RANDOM | |
116 | # define BOOST_NO_CXX11_HDR_REGEX | |
117 | # define BOOST_NO_CXX11_HDR_SYSTEM_ERROR | |
118 | # define BOOST_NO_CXX11_HDR_UNORDERED_MAP | |
119 | # define BOOST_NO_CXX11_HDR_UNORDERED_SET | |
120 | # define BOOST_NO_CXX11_HDR_TUPLE | |
121 | # define BOOST_NO_CXX11_HDR_TYPEINDEX | |
122 | # define BOOST_NO_CXX11_HDR_FUNCTIONAL | |
123 | # define BOOST_NO_CXX11_NUMERIC_LIMITS | |
124 | # define BOOST_NO_CXX11_SMART_PTR | |
125 | #endif | |
126 | ||
127 | #if ((!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE)) \ | |
128 | && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 610) | |
129 | # define BOOST_NO_CXX11_HDR_TUPLE | |
130 | #endif | |
131 | ||
132 | // C++0x headers implemented in 540 (as shipped by Microsoft) | |
133 | // | |
134 | #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 540 | |
135 | # define BOOST_NO_CXX11_HDR_TYPE_TRAITS | |
136 | # define BOOST_NO_CXX11_HDR_CHRONO | |
137 | # define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE | |
138 | # define BOOST_NO_CXX11_HDR_FUTURE | |
139 | # define BOOST_NO_CXX11_HDR_MUTEX | |
140 | # define BOOST_NO_CXX11_HDR_RATIO | |
141 | # define BOOST_NO_CXX11_HDR_THREAD | |
142 | # define BOOST_NO_CXX11_ATOMIC_SMART_PTR | |
92f5a8d4 | 143 | # define BOOST_NO_CXX11_HDR_EXCEPTION |
7c673cae FG |
144 | #endif |
145 | ||
146 | // C++0x headers implemented in 610 (as shipped by Microsoft) | |
147 | // | |
148 | #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610 | |
149 | # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST | |
150 | # define BOOST_NO_CXX11_HDR_ATOMIC | |
151 | # define BOOST_NO_CXX11_ALLOCATOR | |
152 | // 540 has std::align but it is not a conforming implementation | |
153 | # define BOOST_NO_CXX11_STD_ALIGN | |
154 | #endif | |
155 | ||
b32b8144 FG |
156 | // Before 650 std::pointer_traits has a broken rebind template |
157 | #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 650 | |
158 | # define BOOST_NO_CXX11_POINTER_TRAITS | |
159 | #elif defined(BOOST_MSVC) && BOOST_MSVC < 1910 | |
160 | # define BOOST_NO_CXX11_POINTER_TRAITS | |
161 | #endif | |
162 | ||
7c673cae FG |
163 | #if defined(__has_include) |
164 | #if !__has_include(<shared_mutex>) | |
165 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
b32b8144 | 166 | #elif (__cplusplus < 201402) && !defined(_MSC_VER) |
7c673cae FG |
167 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX |
168 | #endif | |
169 | #elif !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) | |
170 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
171 | #endif | |
172 | ||
b32b8144 FG |
173 | // C++14 features |
174 | #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) | |
175 | # define BOOST_NO_CXX14_STD_EXCHANGE | |
176 | #endif | |
177 | ||
7c673cae | 178 | // C++17 features |
b32b8144 FG |
179 | #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1910) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) |
180 | # define BOOST_NO_CXX17_STD_APPLY | |
11fdf7f2 | 181 | # define BOOST_NO_CXX17_ITERATOR_TRAITS |
92f5a8d4 TL |
182 | # define BOOST_NO_CXX17_HDR_STRING_VIEW |
183 | # define BOOST_NO_CXX17_HDR_OPTIONAL | |
184 | # define BOOST_NO_CXX17_HDR_VARIANT | |
b32b8144 | 185 | #endif |
92f5a8d4 | 186 | #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) || !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 201709) |
7c673cae | 187 | # define BOOST_NO_CXX17_STD_INVOKE |
11fdf7f2 TL |
188 | #endif |
189 | ||
190 | #if !(!defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1912) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0)) | |
191 | // Deprecated std::iterator: | |
192 | # define BOOST_NO_STD_ITERATOR | |
7c673cae FG |
193 | #endif |
194 | ||
195 | #if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400) | |
196 | // Intel's compiler can't handle this header yet: | |
197 | # define BOOST_NO_CXX11_HDR_ATOMIC | |
198 | #endif | |
199 | ||
200 | ||
201 | // 520..610 have std::addressof, but it doesn't support functions | |
202 | // | |
203 | #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 650 | |
204 | # define BOOST_NO_CXX11_ADDRESSOF | |
205 | #endif | |
206 | ||
207 | // Bug specific to VC14, | |
208 | // See https://connect.microsoft.com/VisualStudio/feedback/details/1348277/link-error-when-using-std-codecvt-utf8-utf16-char16-t | |
209 | // and discussion here: http://blogs.msdn.com/b/vcblog/archive/2014/11/12/visual-studio-2015-preview-now-available.aspx?PageIndex=2 | |
210 | #if defined(_CPPLIB_VER) && (_CPPLIB_VER == 650) | |
211 | # define BOOST_NO_CXX11_HDR_CODECVT | |
212 | #endif | |
213 | ||
214 | #if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 650) | |
b32b8144 | 215 | // If _HAS_AUTO_PTR_ETC is defined to 0, std::auto_ptr and std::random_shuffle are not available. |
7c673cae FG |
216 | // See https://www.visualstudio.com/en-us/news/vs2015-vs.aspx#C++ |
217 | // and http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx | |
218 | # if defined(_HAS_AUTO_PTR_ETC) && (_HAS_AUTO_PTR_ETC == 0) | |
219 | # define BOOST_NO_AUTO_PTR | |
b32b8144 FG |
220 | # define BOOST_NO_CXX98_RANDOM_SHUFFLE |
221 | # define BOOST_NO_CXX98_FUNCTION_BASE | |
222 | # define BOOST_NO_CXX98_BINDERS | |
7c673cae FG |
223 | # endif |
224 | #endif | |
225 | ||
b32b8144 FG |
226 | |
227 | // | |
228 | // Things not supported by the CLR: | |
229 | #ifdef _M_CEE | |
230 | #ifndef BOOST_NO_CXX11_HDR_MUTEX | |
231 | # define BOOST_NO_CXX11_HDR_MUTEX | |
232 | #endif | |
233 | #ifndef BOOST_NO_CXX11_HDR_ATOMIC | |
234 | # define BOOST_NO_CXX11_HDR_ATOMIC | |
235 | #endif | |
236 | #ifndef BOOST_NO_CXX11_HDR_FUTURE | |
237 | # define BOOST_NO_CXX11_HDR_FUTURE | |
238 | #endif | |
239 | #ifndef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE | |
240 | # define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE | |
241 | #endif | |
242 | #ifndef BOOST_NO_CXX11_HDR_THREAD | |
243 | # define BOOST_NO_CXX11_HDR_THREAD | |
244 | #endif | |
245 | #ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
246 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
247 | #endif | |
248 | #ifndef BOOST_NO_CXX14_STD_EXCHANGE | |
249 | # define BOOST_NO_CXX14_STD_EXCHANGE | |
250 | #endif | |
251 | #ifndef BOOST_NO_FENV_H | |
252 | # define BOOST_NO_FENV_H | |
253 | #endif | |
254 | #endif | |
255 | ||
7c673cae FG |
256 | #ifdef _CPPLIB_VER |
257 | # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER | |
258 | #else | |
259 | # define BOOST_DINKUMWARE_STDLIB 1 | |
260 | #endif | |
261 | ||
262 | #ifdef _CPPLIB_VER | |
263 | # define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER) | |
264 | #else | |
265 | # define BOOST_STDLIB "Dinkumware standard library version 1.x" | |
266 | #endif |