]>
Commit | Line | Data |
---|---|---|
1 | // (C) Copyright John Maddock 2001 - 2003. | |
2 | // (C) Copyright Jens Maurer 2001. | |
3 | // (C) Copyright David Abrahams 2003. | |
4 | // (C) Copyright Boris Gubenko 2007. | |
5 | // Use, modification and distribution are subject to the | |
6 | // Boost Software License, Version 1.0. (See accompanying file | |
7 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
8 | ||
9 | // See http://www.boost.org for most recent version. | |
10 | ||
11 | // Rogue Wave std lib: | |
12 | ||
13 | #define BOOST_RW_STDLIB 1 | |
14 | ||
15 | #if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) | |
16 | # include <boost/config/no_tr1/utility.hpp> | |
17 | # if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) | |
18 | # error This is not the Rogue Wave standard library | |
19 | # endif | |
20 | #endif | |
21 | // | |
22 | // figure out a consistent version number: | |
23 | // | |
24 | #ifndef _RWSTD_VER | |
25 | # define BOOST_RWSTD_VER 0x010000 | |
26 | #elif _RWSTD_VER < 0x010000 | |
27 | # define BOOST_RWSTD_VER (_RWSTD_VER << 8) | |
28 | #else | |
29 | # define BOOST_RWSTD_VER _RWSTD_VER | |
30 | #endif | |
31 | ||
32 | #ifndef _RWSTD_VER | |
33 | # define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)" | |
34 | #elif _RWSTD_VER < 0x04010200 | |
35 | # define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER) | |
36 | #else | |
37 | # ifdef _RWSTD_VER_STR | |
38 | # define BOOST_STDLIB "Apache STDCXX standard library version " _RWSTD_VER_STR | |
39 | # else | |
40 | # define BOOST_STDLIB "Apache STDCXX standard library version " BOOST_STRINGIZE(_RWSTD_VER) | |
41 | # endif | |
42 | #endif | |
43 | ||
44 | // | |
45 | // Prior to version 2.2.0 the primary template for std::numeric_limits | |
46 | // does not have compile time constants, even though specializations of that | |
47 | // template do: | |
48 | // | |
49 | #if BOOST_RWSTD_VER < 0x020200 | |
50 | # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS | |
51 | #endif | |
52 | ||
53 | // Sun CC 5.5 patch 113817-07 adds long long specialization, but does not change the | |
54 | // library version number (http://sunsolve6.sun.com/search/document.do?assetkey=1-21-113817): | |
55 | #if BOOST_RWSTD_VER <= 0x020101 && (!defined(__SUNPRO_CC) || (__SUNPRO_CC < 0x550)) | |
56 | # define BOOST_NO_LONG_LONG_NUMERIC_LIMITS | |
57 | # endif | |
58 | ||
59 | // | |
60 | // Borland version of numeric_limits lacks __int64 specialisation: | |
61 | // | |
62 | #ifdef __BORLANDC__ | |
63 | # define BOOST_NO_MS_INT64_NUMERIC_LIMITS | |
64 | #endif | |
65 | ||
66 | // | |
67 | // No std::iterator if it can't figure out default template args: | |
68 | // | |
69 | #if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000) | |
70 | # define BOOST_NO_STD_ITERATOR | |
71 | #endif | |
72 | ||
73 | // | |
74 | // No iterator traits without partial specialization: | |
75 | // | |
76 | #if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC) | |
77 | # define BOOST_NO_STD_ITERATOR_TRAITS | |
78 | #endif | |
79 | ||
80 | // | |
81 | // Prior to version 2.0, std::auto_ptr was buggy, and there were no | |
82 | // new-style iostreams, and no conformant std::allocator: | |
83 | // | |
84 | #if (BOOST_RWSTD_VER < 0x020000) | |
85 | # define BOOST_NO_AUTO_PTR | |
86 | # define BOOST_NO_STRINGSTREAM | |
87 | # define BOOST_NO_STD_ALLOCATOR | |
88 | # define BOOST_NO_STD_LOCALE | |
89 | #endif | |
90 | ||
91 | // | |
92 | // No template iterator constructors without member template support: | |
93 | // | |
94 | #if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES) | |
95 | # define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS | |
96 | #endif | |
97 | ||
98 | // | |
99 | // RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use | |
100 | // (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR | |
101 | // on HP aCC systems even though the allocator is in fact broken): | |
102 | // | |
103 | #if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100) | |
104 | # define BOOST_NO_STD_ALLOCATOR | |
105 | #endif | |
106 | ||
107 | // | |
108 | // If we have a std::locale, we still may not have std::use_facet: | |
109 | // | |
110 | #if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE) | |
111 | # define BOOST_NO_STD_USE_FACET | |
112 | # define BOOST_HAS_TWO_ARG_USE_FACET | |
113 | #endif | |
114 | ||
115 | // | |
116 | // There's no std::distance prior to version 2, or without | |
117 | // partial specialization support: | |
118 | // | |
119 | #if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) | |
120 | #define BOOST_NO_STD_DISTANCE | |
121 | #endif | |
122 | ||
123 | // | |
124 | // Some versions of the rogue wave library don't have assignable | |
125 | // OutputIterators: | |
126 | // | |
127 | #if BOOST_RWSTD_VER < 0x020100 | |
128 | # define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN | |
129 | #endif | |
130 | ||
131 | // | |
132 | // Disable BOOST_HAS_LONG_LONG when the library has no support for it. | |
133 | // | |
134 | #if !defined(_RWSTD_LONG_LONG) && defined(BOOST_HAS_LONG_LONG) | |
135 | # undef BOOST_HAS_LONG_LONG | |
136 | #endif | |
137 | ||
138 | // | |
139 | // check that on HP-UX, the proper RW library is used | |
140 | // | |
141 | #if defined(__HP_aCC) && !defined(_HP_NAMESPACE_STD) | |
142 | # error "Boost requires Standard RW library. Please compile and link with -AA" | |
143 | #endif | |
144 | ||
145 | // | |
146 | // Define macros specific to RW V2.2 on HP-UX | |
147 | // | |
148 | #if defined(__HP_aCC) && (BOOST_RWSTD_VER == 0x02020100) | |
149 | # ifndef __HP_TC1_MAKE_PAIR | |
150 | # define __HP_TC1_MAKE_PAIR | |
151 | # endif | |
152 | # ifndef _HP_INSTANTIATE_STD2_VL | |
153 | # define _HP_INSTANTIATE_STD2_VL | |
154 | # endif | |
155 | #endif | |
156 | ||
157 | #if _RWSTD_VER < 0x05000000 | |
158 | # define BOOST_NO_CXX11_HDR_ARRAY | |
159 | #endif | |
160 | // type_traits header is incomplete: | |
161 | # define BOOST_NO_CXX11_HDR_TYPE_TRAITS | |
162 | // | |
163 | // C++0x headers not yet implemented | |
164 | // | |
165 | # define BOOST_NO_CXX11_HDR_CHRONO | |
166 | # define BOOST_NO_CXX11_HDR_CODECVT | |
167 | # define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE | |
168 | # define BOOST_NO_CXX11_HDR_FORWARD_LIST | |
169 | # define BOOST_NO_CXX11_HDR_FUTURE | |
170 | # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST | |
171 | # define BOOST_NO_CXX11_HDR_MUTEX | |
172 | # define BOOST_NO_CXX11_HDR_RANDOM | |
173 | # define BOOST_NO_CXX11_HDR_RATIO | |
174 | # define BOOST_NO_CXX11_HDR_REGEX | |
175 | # define BOOST_NO_CXX11_HDR_SYSTEM_ERROR | |
176 | # define BOOST_NO_CXX11_HDR_THREAD | |
177 | # define BOOST_NO_CXX11_HDR_TUPLE | |
178 | # define BOOST_NO_CXX11_HDR_TYPEINDEX | |
179 | # define BOOST_NO_CXX11_HDR_UNORDERED_MAP | |
180 | # define BOOST_NO_CXX11_HDR_UNORDERED_SET | |
181 | # define BOOST_NO_CXX11_NUMERIC_LIMITS | |
182 | # define BOOST_NO_CXX11_ALLOCATOR | |
183 | # define BOOST_NO_CXX11_ATOMIC_SMART_PTR | |
184 | # define BOOST_NO_CXX11_SMART_PTR | |
185 | # define BOOST_NO_CXX11_HDR_FUNCTIONAL | |
186 | # define BOOST_NO_CXX11_HDR_ATOMIC | |
187 | # define BOOST_NO_CXX11_STD_ALIGN | |
188 | # define BOOST_NO_CXX11_ADDRESSOF | |
189 | ||
190 | #if defined(__has_include) | |
191 | #if !__has_include(<shared_mutex>) | |
192 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
193 | #elif __cplusplus < 201402 | |
194 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
195 | #endif | |
196 | #else | |
197 | # define BOOST_NO_CXX14_HDR_SHARED_MUTEX | |
198 | #endif | |
199 | ||
200 | // C++17 features | |
201 | # define BOOST_NO_CXX17_STD_INVOKE |