]>
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: | |
25 | # if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(__BORLANDC__) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h | |
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 | // | |
71 | #if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(__BORLANDC__) | |
72 | # define BOOST_STD_EXTENSION_NAMESPACE stdext | |
73 | #endif | |
74 | ||
75 | ||
76 | #if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(__BORLANDC__)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306) | |
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 | ||
89 | // Fix for VC++ 8.0 on up ( I do not have a previous version to test ) | |
90 | // or clang-cl. If exceptions are off you must manually include the | |
91 | // <exception> header before including the <typeinfo> header. Admittedly | |
92 | // trying to use Boost libraries or the standard C++ libraries without | |
93 | // exception support is not suggested but currently clang-cl ( v 3.4 ) | |
94 | // does not support exceptions and must be compiled with exceptions off. | |
95 | #if !_HAS_EXCEPTIONS && ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER))) | |
96 | #include <exception> | |
97 | #endif | |
98 | #include <typeinfo> | |
99 | #if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) | |
100 | # define BOOST_NO_STD_TYPEINFO | |
101 | #endif | |
102 | ||
103 | // C++0x headers implemented in 520 (as shipped by Microsoft) | |
104 | // | |
105 | #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520 | |
106 | # define BOOST_NO_CXX11_HDR_ARRAY | |
107 | # define BOOST_NO_CXX11_HDR_CODECVT | |
108 | # define BOOST_NO_CXX11_HDR_FORWARD_LIST | |
109 | # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST | |
110 | # define BOOST_NO_CXX11_HDR_RANDOM | |
111 | # define BOOST_NO_CXX11_HDR_REGEX | |
112 | # define BOOST_NO_CXX11_HDR_SYSTEM_ERROR | |
113 | # define BOOST_NO_CXX11_HDR_UNORDERED_MAP | |
114 | # define BOOST_NO_CXX11_HDR_UNORDERED_SET | |
115 | # define BOOST_NO_CXX11_HDR_TUPLE | |
116 | # define BOOST_NO_CXX11_HDR_TYPEINDEX | |
117 | # define BOOST_NO_CXX11_HDR_FUNCTIONAL | |
118 | # define BOOST_NO_CXX11_NUMERIC_LIMITS | |
119 | # define BOOST_NO_CXX11_SMART_PTR | |
120 | #endif | |
121 | ||
122 | #if ((!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE)) \ | |
123 | && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 610) | |
124 | # define BOOST_NO_CXX11_HDR_TUPLE | |
125 | #endif | |
126 | ||
127 | // C++0x headers implemented in 540 (as shipped by Microsoft) | |
128 | // | |
129 | #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 540 | |
130 | # define BOOST_NO_CXX11_HDR_TYPE_TRAITS | |
131 | # define BOOST_NO_CXX11_HDR_CHRONO | |
132 | # define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE | |
133 | # define BOOST_NO_CXX11_HDR_FUTURE | |
134 | # define BOOST_NO_CXX11_HDR_MUTEX | |
135 | # define BOOST_NO_CXX11_HDR_RATIO | |
136 | # define BOOST_NO_CXX11_HDR_THREAD | |
137 | # define BOOST_NO_CXX11_ATOMIC_SMART_PTR | |
138 | #endif | |
139 | ||
140 | // C++0x headers implemented in 610 (as shipped by Microsoft) | |
141 | // | |
142 | #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610 | |
143 | # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST | |
144 | # define BOOST_NO_CXX11_HDR_ATOMIC | |
145 | # define BOOST_NO_CXX11_ALLOCATOR | |
146 | // 540 has std::align but it is not a conforming implementation | |
147 | # define BOOST_NO_CXX11_STD_ALIGN | |
148 | #endif | |
149 | ||
150 | #if defined(__has_include) | |
151 | #if !__has_include(<shared_mutex>) | |
152 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
153 | #elif __cplusplus < 201402 | |
154 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
155 | #endif | |
156 | #elif !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) | |
157 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
158 | #endif | |
159 | ||
160 | // C++17 features | |
161 | #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) | |
162 | # define BOOST_NO_CXX17_STD_INVOKE | |
163 | #endif | |
164 | ||
165 | #if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400) | |
166 | // Intel's compiler can't handle this header yet: | |
167 | # define BOOST_NO_CXX11_HDR_ATOMIC | |
168 | #endif | |
169 | ||
170 | ||
171 | // 520..610 have std::addressof, but it doesn't support functions | |
172 | // | |
173 | #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 650 | |
174 | # define BOOST_NO_CXX11_ADDRESSOF | |
175 | #endif | |
176 | ||
177 | // Bug specific to VC14, | |
178 | // See https://connect.microsoft.com/VisualStudio/feedback/details/1348277/link-error-when-using-std-codecvt-utf8-utf16-char16-t | |
179 | // and discussion here: http://blogs.msdn.com/b/vcblog/archive/2014/11/12/visual-studio-2015-preview-now-available.aspx?PageIndex=2 | |
180 | #if defined(_CPPLIB_VER) && (_CPPLIB_VER == 650) | |
181 | # define BOOST_NO_CXX11_HDR_CODECVT | |
182 | #endif | |
183 | ||
184 | #if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 650) | |
185 | // If _HAS_AUTO_PTR_ETC is defined to 0, std::auto_ptr is not available. | |
186 | // See https://www.visualstudio.com/en-us/news/vs2015-vs.aspx#C++ | |
187 | // and http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx | |
188 | # if defined(_HAS_AUTO_PTR_ETC) && (_HAS_AUTO_PTR_ETC == 0) | |
189 | # define BOOST_NO_AUTO_PTR | |
190 | # endif | |
191 | #endif | |
192 | ||
193 | #ifdef _CPPLIB_VER | |
194 | # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER | |
195 | #else | |
196 | # define BOOST_DINKUMWARE_STDLIB 1 | |
197 | #endif | |
198 | ||
199 | #ifdef _CPPLIB_VER | |
200 | # define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER) | |
201 | #else | |
202 | # define BOOST_STDLIB "Dinkumware standard library version 1.x" | |
203 | #endif |