Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
third-party
realsense-file
boost
boost
config
stdlib
libstdcpp3.hpp
Go to the documentation of this file.
1
// (C) Copyright John Maddock 2001.
2
// (C) Copyright Jens Maurer 2001.
3
// Use, modification and distribution are subject to the
4
// Boost Software License, Version 1.0. (See accompanying file
5
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
7
// See http://www.boost.org for most recent version.
8
9
// config for libstdc++ v3
10
// not much to go in here:
11
12
#define BOOST_GNU_STDLIB 1
13
14
#ifdef __GLIBCXX__
15
#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
16
#else
17
#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)
18
#endif
19
20
#if !defined(_GLIBCPP_USE_WCHAR_T) && !defined(_GLIBCXX_USE_WCHAR_T)
21
# define BOOST_NO_CWCHAR
22
# define BOOST_NO_CWCTYPE
23
# define BOOST_NO_STD_WSTRING
24
# define BOOST_NO_STD_WSTREAMBUF
25
#endif
26
27
#if defined(__osf__) && !defined(_REENTRANT) \
28
&& ( defined(_GLIBCXX_HAVE_GTHR_DEFAULT) || defined(_GLIBCPP_HAVE_GTHR_DEFAULT) )
29
// GCC 3 on Tru64 forces the definition of _REENTRANT when any std lib header
30
// file is included, therefore for consistency we define it here as well.
31
# define _REENTRANT
32
#endif
33
34
#ifdef __GLIBCXX__ // gcc 3.4 and greater:
35
# if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
36
|| defined(_GLIBCXX__PTHREADS) \
37
|| defined(_GLIBCXX_HAS_GTHREADS) \
38
|| defined(_WIN32) \
39
|| defined(_AIX) \
40
|| defined(__HAIKU__)
41
//
42
// If the std lib has thread support turned on, then turn it on in Boost
43
// as well. We do this because some gcc-3.4 std lib headers define _REENTANT
44
// while others do not...
45
//
46
# define BOOST_HAS_THREADS
47
# else
48
# define BOOST_DISABLE_THREADS
49
# endif
50
#elif defined(__GLIBCPP__) \
51
&& !defined(_GLIBCPP_HAVE_GTHR_DEFAULT) \
52
&& !defined(_GLIBCPP__PTHREADS)
53
// disable thread support if the std lib was built single threaded:
54
# define BOOST_DISABLE_THREADS
55
#endif
56
57
#if (defined(linux) || defined(__linux) || defined(__linux__)) && defined(__arm__) && defined(_GLIBCPP_HAVE_GTHR_DEFAULT)
58
// linux on arm apparently doesn't define _REENTRANT
59
// so just turn on threading support whenever the std lib is thread safe:
60
# define BOOST_HAS_THREADS
61
#endif
62
63
#if !defined(_GLIBCPP_USE_LONG_LONG) \
64
&& !defined(_GLIBCXX_USE_LONG_LONG)\
65
&& defined(BOOST_HAS_LONG_LONG)
66
// May have been set by compiler/*.hpp, but "long long" without library
67
// support is useless.
68
# undef BOOST_HAS_LONG_LONG
69
#endif
70
71
// Apple doesn't seem to reliably defined a *unix* macro
72
#if !defined(CYGWIN) && ( defined(__unix__) \
73
|| defined(__unix) \
74
|| defined(unix) \
75
|| defined(__APPLE__) \
76
|| defined(__APPLE) \
77
|| defined(APPLE))
78
# include <unistd.h>
79
#endif
80
81
#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
82
# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
83
# define BOOST_HAS_SLIST
84
# define BOOST_HAS_HASH
85
# define BOOST_SLIST_HEADER <ext/slist>
86
# if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
87
# define BOOST_HASH_SET_HEADER <ext/hash_set>
88
# define BOOST_HASH_MAP_HEADER <ext/hash_map>
89
# else
90
# define BOOST_HASH_SET_HEADER <backward/hash_set>
91
# define BOOST_HASH_MAP_HEADER <backward/hash_map>
92
# endif
93
#endif
94
95
//
96
// Decide whether we have C++11 support turned on:
97
//
98
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103)
99
# define BOOST_LIBSTDCXX11
100
#endif
101
102
//
103
// Decide which version of libstdc++ we have, normally
104
// libstdc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly
105
// __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the libstdc++
106
// developers. He also commented:
107
//
108
// "I'm not sure how useful __GLIBCXX__ is for your purposes, for instance in
109
// GCC 4.2.4 it is set to 20080519 but in GCC 4.3.0 it is set to 20080305.
110
// Although 4.3.0 was released earlier than 4.2.4, it has better C++0x support
111
// than any release in the 4.2 series."
112
//
113
// Another resource for understanding libstdc++ features is:
114
// http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x
115
//
116
// However, using the GCC version number fails when the compiler is clang since this
117
// only ever claims to emulate GCC-4.2, see https://svn.boost.org/trac/boost/ticket/7473
118
// for a long discussion on this issue. What we can do though is use clang's __has_include
119
// to detect the presence of a C++11 header that was introduced with a specific GCC release.
120
// We still have to be careful though as many such headers were buggy and/or incomplete when
121
// first introduced, so we only check for headers that were fully featured from day 1, and then
122
// use that to infer the underlying GCC version:
123
//
124
#ifdef __clang__
125
126
#if __has_include(<experimental/memory_resource>)
127
# define BOOST_LIBSTDCXX_VERSION 60100
128
#elif __has_include(<experimental/any>)
129
# define BOOST_LIBSTDCXX_VERSION 50100
130
#elif __has_include(<shared_mutex>)
131
# define BOOST_LIBSTDCXX_VERSION 40900
132
#elif __has_include(<ext/cmath>)
133
# define BOOST_LIBSTDCXX_VERSION 40800
134
#elif __has_include(<scoped_allocator>)
135
# define BOOST_LIBSTDCXX_VERSION 40700
136
#elif __has_include(<typeindex>)
137
# define BOOST_LIBSTDCXX_VERSION 40600
138
#elif __has_include(<future>)
139
# define BOOST_LIBSTDCXX_VERSION 40500
140
#elif __has_include(<ratio>)
141
# define BOOST_LIBSTDCXX_VERSION 40400
142
#elif __has_include(<array>)
143
# define BOOST_LIBSTDCXX_VERSION 40300
144
#endif
145
146
//
147
// GCC 4.8 and 9 add working versions of <atomic> and <regex> respectively.
148
// However, we have no test for these as the headers were present but broken
149
// in early GCC versions.
150
//
151
#endif
152
153
#if defined(__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130) && (__cplusplus >= 201103L)
154
//
155
// Oracle Solaris compiler uses it's own verison of libstdc++ but doesn't
156
// set __GNUC__
157
//
158
#if __SUNPRO_CC >= 0x5140
159
#define BOOST_LIBSTDCXX_VERSION 50100
160
#else
161
#define BOOST_LIBSTDCXX_VERSION 40800
162
#endif
163
#endif
164
165
#if !defined(BOOST_LIBSTDCXX_VERSION)
166
# define BOOST_LIBSTDCXX_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
167
#endif
168
169
// std::auto_ptr isn't provided with _GLIBCXX_DEPRECATED=0 (GCC 4.5 and earlier)
170
// or _GLIBCXX_USE_DEPRECATED=0 (GCC 4.6 and later).
171
#if defined(BOOST_LIBSTDCXX11)
172
# if BOOST_LIBSTDCXX_VERSION < 40600
173
# if !_GLIBCXX_DEPRECATED
174
# define BOOST_NO_AUTO_PTR
175
# endif
176
# elif !_GLIBCXX_USE_DEPRECATED
177
# define BOOST_NO_AUTO_PTR
178
# endif
179
#endif
180
181
// C++0x headers in GCC 4.3.0 and later
182
//
183
#if (BOOST_LIBSTDCXX_VERSION < 40300) || !defined(BOOST_LIBSTDCXX11)
184
# define BOOST_NO_CXX11_HDR_ARRAY
185
# define BOOST_NO_CXX11_HDR_TUPLE
186
# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
187
# define BOOST_NO_CXX11_HDR_UNORDERED_SET
188
# define BOOST_NO_CXX11_HDR_FUNCTIONAL
189
#endif
190
191
// C++0x headers in GCC 4.4.0 and later
192
//
193
#if (BOOST_LIBSTDCXX_VERSION < 40400) || !defined(BOOST_LIBSTDCXX11)
194
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
195
# define BOOST_NO_CXX11_HDR_FORWARD_LIST
196
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
197
# define BOOST_NO_CXX11_HDR_MUTEX
198
# define BOOST_NO_CXX11_HDR_RATIO
199
# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
200
# define BOOST_NO_CXX11_SMART_PTR
201
#else
202
# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
203
# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
204
#endif
205
206
// C++0x features in GCC 4.5.0 and later
207
//
208
#if (BOOST_LIBSTDCXX_VERSION < 40500) || !defined(BOOST_LIBSTDCXX11)
209
# define BOOST_NO_CXX11_NUMERIC_LIMITS
210
# define BOOST_NO_CXX11_HDR_FUTURE
211
# define BOOST_NO_CXX11_HDR_RANDOM
212
#endif
213
214
// C++0x features in GCC 4.6.0 and later
215
//
216
#if (BOOST_LIBSTDCXX_VERSION < 40600) || !defined(BOOST_LIBSTDCXX11)
217
# define BOOST_NO_CXX11_HDR_TYPEINDEX
218
# define BOOST_NO_CXX11_ADDRESSOF
219
#endif
220
221
// C++0x features in GCC 4.7.0 and later
222
//
223
#if (BOOST_LIBSTDCXX_VERSION < 40700) || !defined(BOOST_LIBSTDCXX11)
224
// Note that although <chrono> existed prior to 4.7, "steady_clock" is spelled "monotonic_clock"
225
// so 4.7.0 is the first truly conforming one.
226
# define BOOST_NO_CXX11_HDR_CHRONO
227
# define BOOST_NO_CXX11_ALLOCATOR
228
#endif
229
// C++0x features in GCC 4.8.0 and later
230
//
231
#if (BOOST_LIBSTDCXX_VERSION < 40800) || !defined(BOOST_LIBSTDCXX11)
232
// Note that although <atomic> existed prior to gcc 4.8 it was largely unimplemented for many types:
233
# define BOOST_NO_CXX11_HDR_ATOMIC
234
# define BOOST_NO_CXX11_HDR_THREAD
235
#endif
236
// C++0x features in GCC 4.9.0 and later
237
//
238
#if (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
239
// Although <regex> is present and compilable against, the actual implementation is not functional
240
// even for the simplest patterns such as "\d" or "[0-9]". This is the case at least in gcc up to 4.8, inclusively.
241
# define BOOST_NO_CXX11_HDR_REGEX
242
#endif
243
#if (BOOST_LIBSTDCXX_VERSION < 40900) || (__cplusplus <= 201103)
244
# define BOOST_NO_CXX14_STD_EXCHANGE
245
#endif
246
247
#if defined(__clang_major__) && ((__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 7)))
248
// As of clang-3.6, libstdc++ header <atomic> throws up errors with clang:
249
# define BOOST_NO_CXX11_HDR_ATOMIC
250
#endif
251
//
252
// C++0x features in GCC 5.1 and later
253
//
254
#if (BOOST_LIBSTDCXX_VERSION < 50100) || !defined(BOOST_LIBSTDCXX11)
255
# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
256
# define BOOST_NO_CXX11_HDR_CODECVT
257
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
258
# define BOOST_NO_CXX11_STD_ALIGN
259
#endif
260
261
//
262
// C++17 features in GCC 6.1 and later
263
//
264
#if (BOOST_LIBSTDCXX_VERSION < 60100) || (__cplusplus <= 201402L)
265
# define BOOST_NO_CXX17_STD_INVOKE
266
#endif
267
#if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L)
268
# define BOOST_NO_CXX17_STD_APPLY
269
#endif
270
271
#if defined(__has_include)
272
#if !__has_include(<shared_mutex>)
273
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
274
#elif __cplusplus <= 201103
275
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
276
#endif
277
#elif __cplusplus < 201402 || (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
278
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
279
#endif
280
281
//
282
// Headers not present on Solaris with the Oracle compiler:
283
#if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x5140)
284
#define BOOST_NO_CXX11_HDR_FUTURE
285
#define BOOST_NO_CXX11_HDR_FORWARD_LIST
286
#define BOOST_NO_CXX11_HDR_ATOMIC
287
// shared_ptr is present, but is not convertible to bool
288
// which causes all kinds of problems especially in Boost.Thread
289
// but probably elsewhere as well.
290
#define BOOST_NO_CXX11_SMART_PTR
291
#endif
292
293
#if (!defined(_GLIBCXX_HAS_GTHREADS) || !defined(_GLIBCXX_USE_C99_STDINT_TR1))
294
// Headers not always available:
295
# ifndef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
296
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
297
# endif
298
# ifndef BOOST_NO_CXX11_HDR_MUTEX
299
# define BOOST_NO_CXX11_HDR_MUTEX
300
# endif
301
# ifndef BOOST_NO_CXX11_HDR_THREAD
302
# define BOOST_NO_CXX11_HDR_THREAD
303
# endif
304
# ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX
305
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
306
# endif
307
#endif
308
309
#if (!defined(_GTHREAD_USE_MUTEX_TIMEDLOCK) || (_GTHREAD_USE_MUTEX_TIMEDLOCK == 0)) && !defined(BOOST_NO_CXX11_HDR_MUTEX)
310
// Timed mutexes are not always available:
311
# define BOOST_NO_CXX11_HDR_MUTEX
312
#endif
313
314
// --- end ---
librealsense2
Author(s): Sergey Dorodnicov
, Doron Hirshberg
, Mark Horn
, Reagan Lopez
, Itay Carpis
autogenerated on Mon May 3 2021 02:47:21