sick_visionary_cpp_shared
3pp
boost
config
compiler
borland.hpp
Go to the documentation of this file.
1
// (C) Copyright John Maddock 2001 - 2003.
2
// (C) Copyright David Abrahams 2002 - 2003.
3
// (C) Copyright Aleksey Gurtovoy 2002.
4
// Use, modification and distribution are subject to the
5
// Boost Software License, Version 1.0. (See accompanying file
6
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7
8
// See http://www.boost.org for most recent version.
9
10
// Borland C++ compiler setup:
11
12
//
13
// versions check:
14
// we don't support Borland prior to version 5.4:
15
#if __BORLANDC__ < 0x540
16
# error "Compiler not supported or configured - please reconfigure"
17
#endif
18
19
// last known compiler version:
20
#if (__BORLANDC__ > 0x613)
21
//# if defined(BOOST_ASSERT_CONFIG)
22
# error "Unknown compiler version - please run the configure tests and report the results"
23
//# else
24
//# pragma message( "Unknown compiler version - please run the configure tests and report the results")
25
//# endif
26
#elif (__BORLANDC__ == 0x600)
27
# error "CBuilderX preview compiler is no longer supported"
28
#endif
29
30
//
31
// Support macros to help with standard library detection
32
#if (__BORLANDC__ < 0x560) || defined(_USE_OLD_RW_STL)
33
# define BOOST_BCB_WITH_ROGUE_WAVE
34
#elif __BORLANDC__ < 0x570
35
# define BOOST_BCB_WITH_STLPORT
36
#else
37
# define BOOST_BCB_WITH_DINKUMWARE
38
#endif
39
40
//
41
// Version 5.0 and below:
42
# if __BORLANDC__ <= 0x0550
43
// Borland C++Builder 4 and 5:
44
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
45
# if __BORLANDC__ == 0x0550
46
// Borland C++Builder 5, command-line compiler 5.5:
47
# define BOOST_NO_OPERATORS_IN_NAMESPACE
48
# endif
49
// Variadic macros do not exist for C++ Builder versions 5 and below
50
#define BOOST_NO_CXX11_VARIADIC_MACROS
51
# endif
52
53
// Version 5.51 and below:
54
#if (__BORLANDC__ <= 0x551)
55
# define BOOST_NO_CV_SPECIALIZATIONS
56
# define BOOST_NO_CV_VOID_SPECIALIZATIONS
57
# define BOOST_NO_DEDUCED_TYPENAME
58
// workaround for missing WCHAR_MAX/WCHAR_MIN:
59
#ifdef __cplusplus
60
#include <climits>
61
#include <cwchar>
62
#else
63
#include <limits.h>
64
#include <wchar.h>
65
#endif // __cplusplus
66
#ifndef WCHAR_MAX
67
# define WCHAR_MAX 0xffff
68
#endif
69
#ifndef WCHAR_MIN
70
# define WCHAR_MIN 0
71
#endif
72
#endif
73
74
// Borland C++ Builder 6 and below:
75
#if (__BORLANDC__ <= 0x564)
76
77
# if defined(NDEBUG) && defined(__cplusplus)
78
// fix broken <cstring> so that Boost.test works:
79
# include <cstring>
80
# undef strcmp
81
# endif
82
// fix broken errno declaration:
83
# include <errno.h>
84
# ifndef errno
85
# define errno errno
86
# endif
87
88
#endif
89
90
//
91
// new bug in 5.61:
92
#if (__BORLANDC__ >= 0x561) && (__BORLANDC__ <= 0x580)
93
// this seems to be needed by the command line compiler, but not the IDE:
94
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
95
#endif
96
97
// Borland C++ Builder 2006 Update 2 and below:
98
#if (__BORLANDC__ <= 0x582)
99
# define BOOST_NO_SFINAE
100
# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
101
# define BOOST_NO_TEMPLATE_TEMPLATES
102
103
# define BOOST_NO_PRIVATE_IN_AGGREGATE
104
105
# ifdef _WIN32
106
# define BOOST_NO_SWPRINTF
107
# elif defined(linux) || defined(__linux__) || defined(__linux)
108
// we should really be able to do without this
109
// but the wcs* functions aren't imported into std::
110
# define BOOST_NO_STDC_NAMESPACE
111
// _CPPUNWIND doesn't get automatically set for some reason:
112
# pragma defineonoption BOOST_CPPUNWIND -x
113
# endif
114
#endif
115
116
#if (__BORLANDC__ <= 0x613) // Beman has asked Alisdair for more info
117
// we shouldn't really need this - but too many things choke
118
// without it, this needs more investigation:
119
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
120
# define BOOST_NO_IS_ABSTRACT
121
# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
122
# define BOOST_NO_USING_TEMPLATE
123
# define BOOST_SP_NO_SP_CONVERTIBLE
124
125
// Temporary workaround
126
#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
127
#endif
128
129
// Borland C++ Builder 2008 and below:
130
# define BOOST_NO_INTEGRAL_INT64_T
131
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
132
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
133
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
134
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
135
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
136
# define BOOST_NO_NESTED_FRIENDSHIP
137
# define BOOST_NO_TYPENAME_WITH_CTOR
138
#if (__BORLANDC__ < 0x600)
139
# define BOOST_ILLEGAL_CV_REFERENCES
140
#endif
141
142
//
143
// Positive Feature detection
144
//
145
// Borland C++ Builder 2008 and below:
146
#if (__BORLANDC__ >= 0x599)
147
# pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax
148
#endif
149
//
150
// C++0x Macros:
151
//
152
#if !defined( BOOST_CODEGEAR_0X_SUPPORT ) || (__BORLANDC__ < 0x610)
153
# define BOOST_NO_CXX11_CHAR16_T
154
# define BOOST_NO_CXX11_CHAR32_T
155
# define BOOST_NO_CXX11_DECLTYPE
156
# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
157
# define BOOST_NO_CXX11_EXTERN_TEMPLATE
158
# define BOOST_NO_CXX11_RVALUE_REFERENCES
159
# define BOOST_NO_CXX11_SCOPED_ENUMS
160
# define BOOST_NO_CXX11_STATIC_ASSERT
161
#else
162
# define BOOST_HAS_ALIGNOF
163
# define BOOST_HAS_CHAR16_T
164
# define BOOST_HAS_CHAR32_T
165
# define BOOST_HAS_DECLTYPE
166
# define BOOST_HAS_EXPLICIT_CONVERSION_OPS
167
# define BOOST_HAS_REF_QUALIFIER
168
# define BOOST_HAS_RVALUE_REFS
169
# define BOOST_HAS_STATIC_ASSERT
170
#endif
171
172
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
173
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
174
#define BOOST_NO_CXX11_CONSTEXPR
175
#define BOOST_NO_CXX11_DECLTYPE_N3276
176
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
177
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
178
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
179
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
180
#define BOOST_NO_CXX11_LAMBDAS
181
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
182
#define BOOST_NO_CXX11_NULLPTR
183
#define BOOST_NO_CXX11_RANGE_BASED_FOR
184
#define BOOST_NO_CXX11_RAW_LITERALS
185
#define BOOST_NO_CXX11_RVALUE_REFERENCES
186
#define BOOST_NO_CXX11_SCOPED_ENUMS
187
#define BOOST_NO_SFINAE_EXPR
188
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
189
#define BOOST_NO_CXX11_UNICODE_LITERALS // UTF-8 still not supported
190
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
191
#define BOOST_NO_CXX11_NOEXCEPT
192
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
193
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
194
#define BOOST_NO_CXX11_ALIGNAS
195
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
196
#define BOOST_NO_CXX11_INLINE_NAMESPACES
197
#define BOOST_NO_CXX11_REF_QUALIFIERS
198
#define BOOST_NO_CXX11_FINAL
199
#define BOOST_NO_CXX11_THREAD_LOCAL
200
201
// C++ 14:
202
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
203
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
204
#endif
205
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
206
# define BOOST_NO_CXX14_BINARY_LITERALS
207
#endif
208
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
209
# define BOOST_NO_CXX14_CONSTEXPR
210
#endif
211
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
212
# define BOOST_NO_CXX14_DECLTYPE_AUTO
213
#endif
214
#if (__cplusplus < 201304) // There's no SD6 check for this....
215
# define BOOST_NO_CXX14_DIGIT_SEPARATORS
216
#endif
217
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
218
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
219
#endif
220
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
221
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
222
#endif
223
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
224
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
225
#endif
226
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
227
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
228
#endif
229
230
#if __BORLANDC__ >= 0x590
231
# define BOOST_HAS_TR1_HASH
232
233
# define BOOST_HAS_MACRO_USE_FACET
234
#endif
235
236
//
237
// Post 0x561 we have long long and stdint.h:
238
#if __BORLANDC__ >= 0x561
239
# ifndef __NO_LONG_LONG
240
# define BOOST_HAS_LONG_LONG
241
# else
242
# define BOOST_NO_LONG_LONG
243
# endif
244
// On non-Win32 platforms let the platform config figure this out:
245
# ifdef _WIN32
246
# define BOOST_HAS_STDINT_H
247
# endif
248
#endif
249
250
// Borland C++Builder 6 defaults to using STLPort. If _USE_OLD_RW_STL is
251
// defined, then we have 0x560 or greater with the Rogue Wave implementation
252
// which presumably has the std::DBL_MAX bug.
253
#if defined( BOOST_BCB_WITH_ROGUE_WAVE )
254
// <climits> is partly broken, some macros define symbols that are really in
255
// namespace std, so you end up having to use illegal constructs like
256
// std::DBL_MAX, as a fix we'll just include float.h and have done with:
257
#include <float.h>
258
#endif
259
//
260
// __int64:
261
//
262
#if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__)
263
# define BOOST_HAS_MS_INT64
264
#endif
265
//
266
// check for exception handling support:
267
//
268
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
269
# define BOOST_NO_EXCEPTIONS
270
#endif
271
//
272
// all versions have a <dirent.h>:
273
//
274
#ifndef __STRICT_ANSI__
275
# define BOOST_HAS_DIRENT_H
276
#endif
277
//
278
// all versions support __declspec:
279
//
280
#if defined(__STRICT_ANSI__)
281
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
282
# define BOOST_SYMBOL_EXPORT
283
#endif
284
//
285
// ABI fixing headers:
286
//
287
#if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet
288
#ifndef BOOST_ABI_PREFIX
289
# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
290
#endif
291
#ifndef BOOST_ABI_SUFFIX
292
# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
293
#endif
294
#endif
295
//
296
// Disable Win32 support in ANSI mode:
297
//
298
#if __BORLANDC__ < 0x600
299
# pragma defineonoption BOOST_DISABLE_WIN32 -A
300
#elif defined(__STRICT_ANSI__)
301
# define BOOST_DISABLE_WIN32
302
#endif
303
//
304
// MSVC compatibility mode does some nasty things:
305
// TODO: look up if this doesn't apply to the whole 12xx range
306
//
307
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
308
# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
309
# define BOOST_NO_VOID_RETURNS
310
#endif
311
312
// Borland did not implement value-initialization completely, as I reported
313
// in 2007, Borland Report 51854, "Value-initialization: POD struct should be
314
// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854
315
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
316
// (Niels Dekker, LKEB, April 2010)
317
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
318
319
#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:38:04