diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html
index 5287e835..1ae8f0f8 100644
--- a/doc/html/boost_config/boost_macro_reference.html
+++ b/doc/html/boost_config/boost_macro_reference.html
@@ -1695,6 +1695,26 @@
BOOST_DINKUMWARE_STDLIB
diff --git a/doc/html/index.html b/doc/html/index.html
index 48677667..5c2f3211 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -28,7 +28,7 @@
Copyright © 2001 -2007 Beman Dawes, Vesa Karvonen, John Maddock
-Last revised: September 26, 2010 at 09:24:20 GMT |
+Last revised: November 25, 2010 at 10:30:55 GMT |
|
diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk
index 1c7e8c46..eae6572f 100644
--- a/doc/macro_reference.qbk
+++ b/doc/macro_reference.qbk
@@ -71,6 +71,11 @@ The Platform does not provide `` and ``.
[[`BOOST_NO_CWCTYPE`][Platform][
The Platform does not provide `` and ``.
]]
+[[`BOOST_NO_FENV_H`][Platform, Standard library][
+The C standard library doesn't provide ``. [@../../../../boost/detail/fenv.hpp
+``] should be included instead of `` for maximum
+portability on platforms which do provide ``.
+]]
[[`BOOST_NO_DEPENDENT_NESTED_DERIVATIONS`][Compiler][
The compiler fails to compile a nested class that has a dependent base class:
``
@@ -798,6 +803,38 @@ the arguments is itself a macro (see 16.3.1 in C++ standard). This is normally
used to create a mangled name in combination with a predefined macro such a
\_\_LINE__.
]]
+[[`BOOST_CONSTEXPR`][
+Some compilers don't support the use of `constexpr`. This macro expands to nothing on those compilers, and `constexpr`
+elsewhere. For example, when defining a constexpr function or constructor replace:
+``
+ constexpr tuple();
+``
+with:
+``
+ BOOST_CONSTEXPR tuple();
+``
+]]
+[[`BOOST_CONSTEXPR_OR_CONST`][
+Some compilers don't support the use of `constexpr`. This macro expands to `const` on those compilers, and `constexpr`
+elsewhere. For example, when defining const expr variables replace:
+``
+ static constexpr UIntType xor_mask = a;
+``
+with:
+``
+ static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a;
+``
+]]
+[[`BOOST_STATIC_CONSTEXPR`][
+This is a shortcut for `static BOOST_CONSTEXPR_OR_CONST`For example, when defining const expr variables replace:
+``
+ static constexpr UIntType xor_mask = a;
+``
+with:
+``
+ BOOST_STATIC_CONSTEXPR UIntType xor_mask = a;
+``
+]]
]
[endsect]
@@ -845,6 +882,26 @@ Defined to 1 if the compiler is the Clang compiler.
[[`BOOST_WINDOWS`][``][
Defined if the Windows platfrom API is available.
]]
+[[`BOOST_LINUX`][``][
+Defined if the system kernel is Linux
+]]
+[[`BOOST_NIX`][``][
+Defined if the system is POSIX compliant
+]]
+[[`BOOST_GENETIC_NIX`][``][
+Defined if the system can trace its ancestry to the original AT&T codebase or
+designs, but is not certified by the Open Group. This is the case for modern
+open-source BSD systems.
+]]
+[[`BOOST_TRADEMARK_NIX`][``][
+Systems certified as POSIX compliant by the Open Group. These systems can use
+the UNIX trademark. Most commercially developed *nix systems fall into this
+category.
+]]
+[[`BOOST_FUNCTIONAL_NIX`][``][
+Systems which behave in a manner roughly consistent with POSIX standards. Linux
+and Minix fall into this category.
+]]
[[`BOOST_DINKUMWARE_STDLIB`][``][
Defined if the dinkumware standard library is in use, takes the same value
as the Dinkumware library version macro `_CPPLIB_VER` if defined, otherwise 1.
diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp
index e562caff..f5a0a007 100644
--- a/include/boost/config/auto_link.hpp
+++ b/include/boost/config/auto_link.hpp
@@ -414,7 +414,4 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
#if defined(BOOST_DYN_LINK)
# undef BOOST_DYN_LINK
#endif
-#if defined(BOOST_AUTO_LINK_NOMANGLE)
-# undef BOOST_AUTO_LINK_NOMANGLE
-#endif
diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp
index a989fd63..2816ab88 100644
--- a/include/boost/config/compiler/borland.hpp
+++ b/include/boost/config/compiler/borland.hpp
@@ -12,6 +12,9 @@
//
// versions check:
// we don't support Borland prior to version 5.4:
+
+#define BOOST_BORLAND __BORLANDC__
+
#if __BORLANDC__ < 0x540
# error "Compiler not supported or configured - please reconfigure"
#endif
diff --git a/include/boost/config/compiler/comeau.hpp b/include/boost/config/compiler/comeau.hpp
index 278222dc..c2cedb17 100644
--- a/include/boost/config/compiler/comeau.hpp
+++ b/include/boost/config/compiler/comeau.hpp
@@ -14,6 +14,8 @@
#include "boost/config/compiler/common_edg.hpp"
+#define BOOST_COMO __COMO_VERSION__
+
#if (__COMO_VERSION__ <= 4245)
# if defined(_MSC_VER) && _MSC_VER <= 1300
diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp
index 682c73af..9042578b 100644
--- a/include/boost/config/compiler/common_edg.hpp
+++ b/include/boost/config/compiler/common_edg.hpp
@@ -62,10 +62,13 @@
#if (__EDG_VERSION__ < 310)
# define BOOST_NO_EXTERN_TEMPLATE
#endif
-#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG)
+#if (__EDG_VERSION__ <= 310)
// No support for initializer lists
# define BOOST_NO_INITIALIZER_LISTS
#endif
+#if (__EDG_VERSION__ < 400)
+# define BOOST_NO_VARIADIC_MACROS
+#endif
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
@@ -88,7 +91,6 @@
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
-#define BOOST_NO_VARIADIC_MACROS
#ifdef c_plusplus
// EDG has "long long" in non-strict mode
diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp
index eeaf9982..7ce7fe6b 100644
--- a/include/boost/config/compiler/gcc.hpp
+++ b/include/boost/config/compiler/gcc.hpp
@@ -89,7 +89,6 @@
# define BOOST_NO_EXCEPTIONS
#endif
-
//
// Threading support: Turn this on unconditionally here (except for
// those platforms where we can know for sure). It will get turned off again
@@ -148,8 +147,6 @@
// C++0x features not implemented in any GCC version
//
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_NULLPTR
#define BOOST_NO_TEMPLATE_ALIASES
// C++0x features in 4.3.n and later
@@ -211,6 +208,13 @@
# define BOOST_NO_UNICODE_LITERALS
#endif
+// C++0x features in 4.5.n and later
+//
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_NULLPTR
+#endif
+
// ConceptGCC compiler:
// http://www.generic-programming.org/software/ConceptGCC/
#ifdef __GXX_CONCEPTS__
@@ -231,8 +235,8 @@
# error "Compiler not configured - please reconfigure"
#endif
//
-// last known and checked version is 4.4 (Pre-release):
-#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 4))
+// last known and checked version is 4.6 (Pre-release):
+#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6))
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# else
diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp
index 21083b7a..81854a0f 100644
--- a/include/boost/config/compiler/metrowerks.hpp
+++ b/include/boost/config/compiler/metrowerks.hpp
@@ -12,6 +12,8 @@
// Metrowerks C++ compiler setup:
+#define BOOST_MWERKS __MWERKS__
+
// locale support is disabled when linking with the dynamic runtime
# ifdef _MSL_NO_LOCALE
# define BOOST_NO_STD_LOCALE
diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp
index 85fa4625..e718dbb6 100644
--- a/include/boost/config/compiler/sunpro_cc.hpp
+++ b/include/boost/config/compiler/sunpro_cc.hpp
@@ -11,6 +11,10 @@
// Sun C++ compiler setup:
+// Macro identifying the Sun compiler
+
+#define BOOST_SUNCC __SUNPRO_CC
+
# if __SUNPRO_CC <= 0x500
# define BOOST_NO_MEMBER_TEMPLATES
# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp
index 6755287d..38789367 100644
--- a/include/boost/config/compiler/visualc.hpp
+++ b/include/boost/config/compiler/visualc.hpp
@@ -37,6 +37,9 @@
//
#endif
+/// Visual Studio has no fenv.h
+#define BOOST_NO_FENV_H
+
#if (_MSC_VER <= 1300) // 1300 == VC++ 7.0
# if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za
@@ -94,10 +97,6 @@
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
#endif
-#if _MSC_VER <= 1600 // 1600 == VC++ 10.0
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#endif
-
#if _MSC_VER == 1500 // 1500 == VC++ 9.0
// A bug in VC9:
# define BOOST_NO_ADL_BARRIER
@@ -181,6 +180,7 @@
#define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_NULLPTR
#endif // _MSC_VER < 1600
+
#if _MSC_VER >= 1600
#define BOOST_HAS_STDINT_H
#endif
@@ -198,10 +198,11 @@
#define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_SCOPED_ENUMS
-#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
//
// prefix and suffix headers:
//
diff --git a/include/boost/config/platform/aix.hpp b/include/boost/config/platform/aix.hpp
index 894ef42c..ec22a42f 100644
--- a/include/boost/config/platform/aix.hpp
+++ b/include/boost/config/platform/aix.hpp
@@ -1,4 +1,5 @@
// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -9,6 +10,13 @@
#define BOOST_PLATFORM "IBM Aix"
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+#define BOOST_TRADEMARK_NIX 1
+//#define BOOST_FUNCTIONAL_NIX 1
+
+#define BOOST_AIX 1
+
#define BOOST_HAS_UNISTD_H
#define BOOST_HAS_NL_TYPES_H
#define BOOST_HAS_NANOSLEEP
diff --git a/include/boost/config/platform/amigaos.hpp b/include/boost/config/platform/amigaos.hpp
index 34bcf412..a1f12f6d 100644
--- a/include/boost/config/platform/amigaos.hpp
+++ b/include/boost/config/platform/amigaos.hpp
@@ -1,4 +1,5 @@
// (C) Copyright John Maddock 2002.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -7,6 +8,8 @@
#define BOOST_PLATFORM "AmigaOS"
+#define BOOST_AMIGA 1
+
#define BOOST_DISABLE_THREADS
#define BOOST_NO_CWCHAR
#define BOOST_NO_STD_WSTRING
diff --git a/include/boost/config/platform/beos.hpp b/include/boost/config/platform/beos.hpp
index 48c3d8dc..cda00164 100644
--- a/include/boost/config/platform/beos.hpp
+++ b/include/boost/config/platform/beos.hpp
@@ -1,4 +1,5 @@
// (C) Copyright John Maddock 2001.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -9,6 +10,13 @@
#define BOOST_PLATFORM "BeOS"
+#define BOOST_BEOS 1
+
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+//#define BOOST_TRADEMARK_NIX 1
+#define BOOST_FUNCTIONAL_NIX 1
+
#define BOOST_NO_CWCHAR
#define BOOST_NO_CWCTYPE
#define BOOST_HAS_UNISTD_H
diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp
index a0142978..9720c777 100644
--- a/include/boost/config/platform/bsd.hpp
+++ b/include/boost/config/platform/bsd.hpp
@@ -1,6 +1,7 @@
// (C) Copyright John Maddock 2001 - 2003.
// (C) Copyright Darin Adler 2001.
// (C) Copyright Douglas Gregor 2002.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -9,18 +10,30 @@
// generic BSD config options:
-#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
-#error "This platform is not BSD"
+#if !defined(__FreeBSD__) && \
+ !defined(__NetBSD__) && \
+ !defined(__OpenBSD__) && \
+ !defined(__DragonFly__)
+ #error "This platform is not BSD"
#endif
+#define BOOST_NIX 1
+#define BOOST_GENETIC_NIX 1
+//#define BOOST_TRADEMARK_NIX 1
+//#define BOOST_FUNCTIONAL_NIX 1
+
#ifdef __FreeBSD__
-#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__)
+ #define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__)
+ #define BOOST_FREEBSD __FreeBSD__
#elif defined(__NetBSD__)
-#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__)
+ #define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__)
+ #define BOOST_NETBSD __NetBSD__
#elif defined(__OpenBSD__)
-#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__)
+ #define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__)
+ #define BOOST_OPENBSD __OpenBSD__
#elif defined(__DragonFly__)
-#define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__)
+ #define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__)
+ #define BOOST_DFBSD __DragonFly__
#endif
//
diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp
index 8e1bcb01..aba37193 100644
--- a/include/boost/config/platform/cygwin.hpp
+++ b/include/boost/config/platform/cygwin.hpp
@@ -1,52 +1,56 @@
-// (C) Copyright John Maddock 2001 - 2003.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+// (C) Copyright John Maddock 2001 - 2003
+// (C) Copyright Bryce Lelbach 2010
+//
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+// See http://www.boost.org for most recent version.
-// See http://www.boost.org for most recent version.
+#define BOOST_PLATFORM "Cygwin" // Platform name.
+#define BOOST_CYGWIN __CYGWIN__ // Boost platform ID macros.
-// cygwin specific config options:
-
-#define BOOST_PLATFORM "Cygwin"
#define BOOST_HAS_DIRENT_H
#define BOOST_HAS_LOG1P
#define BOOST_HAS_EXPM1
-//
-// Threading API:
-// See if we have POSIX threads, if we do use them, otherwise
-// revert to native Win threads.
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+//#define BOOST_TRADEMARK_NIX 1
+#define BOOST_FUNCTIONAL_NIX 1
+
+// See if we have POSIX threads, otherwise revert to native Win threads.
#define BOOST_HAS_UNISTD_H
#include
-#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
-# define BOOST_HAS_PTHREADS
-# define BOOST_HAS_SCHED_YIELD
-# define BOOST_HAS_GETTIMEOFDAY
-# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-# define BOOST_HAS_SIGACTION
+
+#if defined(_POSIX_THREADS) && (_POSIX_THREADS + 0 >= 0) && \
+ !defined(BOOST_HAS_WINTHREADS)
+ #define BOOST_HAS_PTHREADS
+ #define BOOST_HAS_SCHED_YIELD
+ #define BOOST_HAS_GETTIMEOFDAY
+ #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+ #define BOOST_HAS_SIGACTION
#else
-# if !defined(BOOST_HAS_WINTHREADS)
-# define BOOST_HAS_WINTHREADS
-# endif
-# define BOOST_HAS_FTIME
+ #if !defined(BOOST_HAS_WINTHREADS)
+ #define BOOST_HAS_WINTHREADS
+ #endif
+ #define BOOST_HAS_FTIME
#endif
-//
-// find out if we have a stdint.h, there should be a better way to do this:
-//
+// Find out if we have a stdint.h, there should be a better way to do this.
#include
+
#ifdef _STDINT_H
-#define BOOST_HAS_STDINT_H
+ #define BOOST_HAS_STDINT_H
#endif
-// boilerplate code:
+/// Cygwin has no fenv.h
+#define BOOST_NO_FENV_H
+
#include
-//
-// Cygwin lies about XSI conformance, there is no nl_types.h:
-//
+// Cygwin lies about XSI conformance, there is no nl_types.h.
#ifdef BOOST_HAS_NL_TYPES_H
-# undef BOOST_HAS_NL_TYPES_H
+ #undef BOOST_HAS_NL_TYPES_H
#endif
diff --git a/include/boost/config/platform/hpux.hpp b/include/boost/config/platform/hpux.hpp
index 19ce68e5..2aefb2d2 100644
--- a/include/boost/config/platform/hpux.hpp
+++ b/include/boost/config/platform/hpux.hpp
@@ -3,6 +3,7 @@
// (C) Copyright David Abrahams 2002.
// (C) Copyright Toon Knapen 2003.
// (C) Copyright Boris Gubenko 2006 - 2007.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -13,6 +14,13 @@
#define BOOST_PLATFORM "HP-UX"
+#define BOOST_HPUX 1 // platform ID macro
+
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+#define BOOST_TRADEMARK_NIX 1
+//#define BOOST_FUNCTIONAL_NIX 1
+
// In principle, HP-UX has a nice under the name
// However, it has the following problem:
// Use of UINT32_C(0) results in "0u l" for the preprocessed source
diff --git a/include/boost/config/platform/irix.hpp b/include/boost/config/platform/irix.hpp
index aeae49c8..4915d813 100644
--- a/include/boost/config/platform/irix.hpp
+++ b/include/boost/config/platform/irix.hpp
@@ -1,5 +1,6 @@
// (C) Copyright John Maddock 2001 - 2003.
// (C) Copyright Jens Maurer 2003.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -11,6 +12,11 @@
#define BOOST_PLATFORM "SGI Irix"
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+#define BOOST_TRADEMARK_NIX 1
+//#define BOOST_FUNCTIONAL_NIX 1
+
#define BOOST_NO_SWPRINTF
//
// these are not auto detected by POSIX feature tests:
diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp
index 51ae1334..3e7f02c7 100644
--- a/include/boost/config/platform/linux.hpp
+++ b/include/boost/config/platform/linux.hpp
@@ -1,5 +1,6 @@
// (C) Copyright John Maddock 2001 - 2003.
// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -13,6 +14,13 @@
// make sure we have __GLIBC_PREREQ if available at all
#include
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+//#define BOOST_TRADEMARK_NIX 1
+#define BOOST_FUNCTIONAL_NIX 1
+
+#define BOOST_LINUX 1
+
//
// added to glibc 2.1.1
// We can only test for 2.1 though:
diff --git a/include/boost/config/platform/macos.hpp b/include/boost/config/platform/macos.hpp
index 2780ef99..d018703d 100644
--- a/include/boost/config/platform/macos.hpp
+++ b/include/boost/config/platform/macos.hpp
@@ -1,6 +1,7 @@
// (C) Copyright John Maddock 2001 - 2003.
// (C) Copyright Darin Adler 2001 - 2002.
// (C) Copyright Bill Kempf 2002.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -13,6 +14,11 @@
#if __MACH__ && !defined(_MSL_USING_MSL_C)
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+#define BOOST_TRADEMARK_NIX 1
+//#define BOOST_FUNCTIONAL_NIX 1
+
// Using the Mac OS X system BSD-style C library.
# ifndef BOOST_HAS_UNISTD_H
diff --git a/include/boost/config/platform/qnxnto.hpp b/include/boost/config/platform/qnxnto.hpp
index b1377c8d..0c54373d 100644
--- a/include/boost/config/platform/qnxnto.hpp
+++ b/include/boost/config/platform/qnxnto.hpp
@@ -1,4 +1,5 @@
// (C) Copyright Jim Douglas 2005.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -7,8 +8,15 @@
// QNX specific config options:
+#define BOOST_QNX 1
+
#define BOOST_PLATFORM "QNX"
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+//#define BOOST_TRADEMARK_NIX 1
+#define BOOST_FUNCTIONAL_NIX 1
+
#define BOOST_HAS_UNISTD_H
#include
diff --git a/include/boost/config/platform/solaris.hpp b/include/boost/config/platform/solaris.hpp
index 9f925666..9a9e1f46 100644
--- a/include/boost/config/platform/solaris.hpp
+++ b/include/boost/config/platform/solaris.hpp
@@ -1,5 +1,6 @@
// (C) Copyright John Maddock 2001 - 2003.
// (C) Copyright Jens Maurer 2003.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -10,6 +11,11 @@
#define BOOST_PLATFORM "Sun Solaris"
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+#define BOOST_TRADEMARK_NIX 1
+//#define BOOST_FUNCTIONAL_NIX 1
+
#define BOOST_HAS_GETTIMEOFDAY
// boilerplate code:
diff --git a/include/boost/config/platform/symbian.hpp b/include/boost/config/platform/symbian.hpp
index ad379431..798dfac4 100644
--- a/include/boost/config/platform/symbian.hpp
+++ b/include/boost/config/platform/symbian.hpp
@@ -1,6 +1,7 @@
// (C) Copyright Yuriy Krasnoschek 2009.
// (C) Copyright John Maddock 2001 - 2003.
// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -9,13 +10,16 @@
// symbian specific config options:
-
#define BOOST_PLATFORM "Symbian"
#define BOOST_SYMBIAN 1
-
#if defined(__S60_3X__)
-// Open C / C++ plugin was introdused in this SDK, earlier versions don't have CRT / STL
+// Open C / C++ plugin was introdused in this SDK, earlier versions don't have
+// CRT / STL
+# define BOOST_NIX 1
+//# define BOOST_GENETIC_NIX 1
+//# define BOOST_TRADEMARK_NIX 1
+# define BOOST_FUNCTIONAL_NIX 1
# define BOOST_S60_3rd_EDITION_FP2_OR_LATER_SDK
// make sure we have __GLIBC_PREREQ if available at all
# include
diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp
index 6ec5171e..3b128bf4 100644
--- a/include/boost/config/platform/vxworks.hpp
+++ b/include/boost/config/platform/vxworks.hpp
@@ -1,4 +1,5 @@
// (C) Copyright Dustin Spicuzza 2009.
+// (C) Copyright Bryce Lelbach 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -23,6 +24,11 @@
#define _POSIX_TIMERS 1
#define _POSIX_THREADS 1
+#define BOOST_NIX 1
+//#define BOOST_GENETIC_NIX 1
+#define BOOST_TRADEMARK_NIX 1
+//#define BOOST_FUNCTIONAL_NIX 1
+
// vxworks doesn't work with asio serial ports
#define BOOST_ASIO_DISABLE_SERIAL_PORT
diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp
index f59c4ea7..72c3dceb 100644
--- a/include/boost/config/platform/win32.hpp
+++ b/include/boost/config/platform/win32.hpp
@@ -31,7 +31,6 @@
# define BOOST_SYMBOL_IMPORT __declspec(dllimport)
#endif
-
#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
# define BOOST_HAS_STDINT_H
# define __STDC_LIMIT_MACROS
@@ -39,6 +38,11 @@
# define BOOST_HAS_UNISTD_H
#endif
+#if defined(__MINGW32__) && (__GNUC__ >= 4)
+# define BOOST_HAS_EXPM1
+# define BOOST_HAS_LOG1P
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
//
// Win32 will normally be using native Win32 threads,
// but there is a pthread library avaliable as an option,
diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp
index e33fef12..a7579daa 100644
--- a/include/boost/config/stdlib/dinkumware.hpp
+++ b/include/boost/config/stdlib/dinkumware.hpp
@@ -107,6 +107,7 @@
# define BOOST_NO_0X_HDR_UNORDERED_SET
# define BOOST_NO_0X_HDR_TUPLE
# define BOOST_NO_0X_HDR_TYPEINDEX
+# define BOOST_NO_NUMERIC_LIMITS_LOWEST
#endif
#if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE)
@@ -125,7 +126,6 @@
# define BOOST_NO_0X_HDR_MUTEX
# define BOOST_NO_0X_HDR_RATIO
# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_NUMERIC_LIMITS_LOWEST
#ifdef _CPPLIB_VER
# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp
index 01dd4907..75bfc4aa 100644
--- a/include/boost/config/stdlib/libstdcpp3.hpp
+++ b/include/boost/config/stdlib/libstdcpp3.hpp
@@ -54,7 +54,6 @@
# define BOOST_HAS_THREADS
#endif
-
#if !defined(_GLIBCPP_USE_LONG_LONG) \
&& !defined(_GLIBCXX_USE_LONG_LONG)\
&& defined(BOOST_HAS_LONG_LONG)
@@ -63,6 +62,16 @@
# undef BOOST_HAS_LONG_LONG
#endif
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include
+#endif
+
#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
# define BOOST_HAS_SLIST
diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp
index 4d426473..5731fe5e 100644
--- a/include/boost/config/stdlib/sgi.hpp
+++ b/include/boost/config/stdlib/sgi.hpp
@@ -40,6 +40,17 @@
# define BOOST_NO_STRINGSTREAM
#endif
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include
+#endif
+
+
//
// Assume no std::locale without own iostreams (this may be an
// incorrect assumption in some cases):
diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp
index 0e1c9b2b..85176a4d 100644
--- a/include/boost/config/stdlib/stlport.hpp
+++ b/include/boost/config/stdlib/stlport.hpp
@@ -16,6 +16,16 @@
# endif
#endif
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include
+#endif
+
//
// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
// for versions prior to 4.1(beta)
diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp
index 0fc092f0..3fcf6e05 100644
--- a/include/boost/config/stdlib/vacpp.hpp
+++ b/include/boost/config/stdlib/vacpp.hpp
@@ -12,6 +12,16 @@
#define BOOST_HAS_MACRO_USE_FACET
#define BOOST_NO_STD_MESSAGES
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include
+#endif
+
// C++0x headers not yet implemented
//
# define BOOST_NO_0X_HDR_ARRAY
diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp
index 722758f9..4e608d24 100644
--- a/include/boost/config/suffix.hpp
+++ b/include/boost/config/suffix.hpp
@@ -349,6 +349,13 @@
#define BOOST_HAS_RVALUE_REFS
#endif
+//
+// Set BOOST_HAS_VARIADIC_TMPL when BOOST_NO_VARIADIC_TEMPLATES is not defined
+//
+#if !defined(BOOST_NO_VARIADIC_TEMPLATES) && !defined(BOOST_HAS_VARIADIC_TMPL)
+#define BOOST_HAS_VARIADIC_TMPL
+#endif
+
// BOOST_HAS_ABI_HEADERS
// This macro gets set if we have headers that fix the ABI,
// and prevent ODR violations when linking to external libraries:
@@ -632,6 +639,10 @@ namespace std{ using ::typeinfo; }
# if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \
|| defined(_POSIX_SOURCE)
# define BOOST_PLATFORM "Generic Unix"
+# define BOOST_NIX 1
+//# define BOOST_GENETIC_NIX 1
+//# define BOOST_TRADEMARK_NIX 1
+# define BOOST_FUNCTIONAL_NIX 1
# else
# define BOOST_PLATFORM "Unknown"
# endif
@@ -643,5 +654,19 @@ namespace std{ using ::typeinfo; }
# ifndef BOOST_GPU_ENABLED
# define BOOST_GPU_ENABLED
# endif
+
+//
+// constexpr workarounds
+//
+#if defined(BOOST_NO_CONSTEXPR)
+#define BOOST_CONSTEXPR
+#define BOOST_CONSTEXPR_OR_CONST const
+#else
+#define BOOST_CONSTEXPR constexpr
+#define BOOST_CONSTEXPR_OR_CONST constexpr
+#endif
+
+#define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST
+
#endif
diff --git a/test/boost_no_fenv_h.ipp b/test/boost_no_fenv_h.ipp
new file mode 100644
index 00000000..97ed5124
--- /dev/null
+++ b/test/boost_no_fenv_h.ipp
@@ -0,0 +1,78 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Bryce Lelbach 2010.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for most recent version.
+
+// MACRO: BOOST_NO_FENV_H
+// TITLE: fenv.h
+// DESCRIPTION: There is no POSIX available. If is
+// available, should be included
+// instead of directly including .
+
+#include
+
+namespace boost_no_fenv_h {
+
+int test()
+{
+ /// POSIX required typedefs
+ typedef ::fenv_t has_fenv_t;
+ typedef ::fexcept_t has_fexcept_t;
+
+ /// POSIX required macros
+ #if !defined(FE_DIVBYZERO)
+ #error platform does not define FE_DIVBYZERO
+ #endif
+
+ #if !defined(FE_INEXACT)
+ #error platform does not define FE_INEXACT
+ #endif
+
+ #if !defined(FE_INVALID)
+ #error platform does not define FE_INVALID
+ #endif
+
+ #if !defined(FE_OVERFLOW)
+ #error platform does not define FE_OVERFLOW
+ #endif
+
+ #if !defined(FE_UNDERFLOW)
+ #error platform does not define FE_UNDERFLOW
+ #endif
+
+ #if !defined(FE_DOWNWARD)
+ #error platform does not define FE_DOWNWARD
+ #endif
+
+ #if !defined(FE_TONEAREST)
+ #error platform does not define FE_TONEAREST
+ #endif
+
+ #if !defined(FE_UPWARD)
+ #error platform does not define FE_UPWARD
+ #endif
+
+ #if !defined(FE_DFL_ENV)
+ #error platform does not define FE_DFL_ENV
+ #endif
+
+ int (*has_feclearexcept)(int) = ::feclearexcept;
+ int (*has_fegetenv)(fenv_t*) = ::fegetenv;
+ int (*has_fegetexcept)(fexcept_t*, int) = ::fegetexcept;
+ int (*has_fegetround)(void) = ::fegetround;
+ int (*has_feholdexcept)(fenv_t*) = ::feholdexcept;
+ int (*has_feraiseexcept)(int) = ::feraiseexcept;
+ int (*has_fesetenv)(const fenv_t*) = ::fesetenv;
+ int (*has_fesetexceptflag)(const fexcept_t*, int) = ::fesetexceptflag;
+ int (*has_fesetround)(int) = ::fesetround;
+ int (*has_fetestexcept)(int) = ::fetestexcept;
+ int (*has_feupdateenv)(const fenv_t*) = ::feupdateenv;
+
+ return 0;
+}
+
+}
+
diff --git a/test/config_info.cpp b/test/config_info.cpp
index 1f6bb1da..762e6c56 100644
--- a/test/config_info.cpp
+++ b/test/config_info.cpp
@@ -27,6 +27,10 @@
#include
#endif
+#if defined(__MINGW32__)
+# include <_mingw.h>
+#endif
+
static unsigned int indent = 4;
static unsigned int width = 40;
@@ -794,6 +798,8 @@ void print_platform_macros()
PRINT_MACRO(_THREAD_SAFE);
PRINT_MACRO(_XOPEN_SOURCE_EXTENDED);
PRINT_MACRO(XPG);
+ PRINT_MACRO(__MINGW32_MAJOR_VERSION);
+ PRINT_MACRO(__MINGW32_MINOR_VERSION);
// POSIX:
PRINT_MACRO(_POSIX_ADVISORY_INFO);
PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO);
@@ -900,6 +906,7 @@ void print_boost_macros()
PRINT_MACRO(BOOST_DISABLE_THREADS);
PRINT_MACRO(BOOST_DISABLE_WIN32);
PRINT_MACRO(BOOST_HAS_THREADS);
+ PRINT_MACRO(BOOST_WINDOWS);
// BEGIN GENERATED BLOCK DO NOT EDIT THIS!!!!!!
PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG);
@@ -1071,30 +1078,15 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES);
PRINT_MACRO(BOOST_NO_VOID_RETURNS);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL);
PRINT_MACRO(BOOST_MSVC);
PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE);
PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0));
+ PRINT_MACRO(BOOST_CONSTEXPR);
+ PRINT_MACRO(BOOST_CONSTEXPR_OR_CONST);
+ PRINT_MACRO(BOOST_STATIC_CONSTEXPR);
}
void print_separator()
diff --git a/test/no_fenv_h_fail.cpp b/test/no_fenv_h_fail.cpp
new file mode 100644
index 00000000..9b2f4103
--- /dev/null
+++ b/test/no_fenv_h_fail.cpp
@@ -0,0 +1,33 @@
+// Copyright Bryce Lelbach 2010.
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.
+
+// Test file for macro BOOST_NO_FENV_H
+// This file should not compile, if it does then
+// BOOST_NO_FENV_H should not be defined.
+// See file boost_no_fenv_h.ipp for details
+
+// Must not have BOOST_ASSERT_CONFIG set; it defeats
+// the objective of this file:
+#ifdef BOOST_ASSERT_CONFIG
+# undef BOOST_ASSERT_CONFIG
+#endif
+
+#include
+#include "test.hpp"
+
+#ifdef BOOST_NO_FENV_H
+#include "boost_no_fenv_h.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_fenv_h::test();
+}
+
diff --git a/test/no_fenv_h_pass.cpp b/test/no_fenv_h_pass.cpp
new file mode 100644
index 00000000..573d6244
--- /dev/null
+++ b/test/no_fenv_h_pass.cpp
@@ -0,0 +1,33 @@
+// Copyright Bryce Lelbach 2010.
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.
+
+// Test file for macro BOOST_NO_FENV_H
+// This file should compile, if it does not then
+// BOOST_NO_FENV_H should be defined.
+// See file boost_no_fenv_h.ipp for details
+
+// Must not have BOOST_ASSERT_CONFIG set; it defeats
+// the objective of this file:
+#ifdef BOOST_ASSERT_CONFIG
+# undef BOOST_ASSERT_CONFIG
+#endif
+
+#include
+#include "test.hpp"
+
+#ifndef BOOST_NO_FENV_H
+#include "boost_no_fenv_h.ipp"
+#else
+namespace boost_no_fenv_h = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_fenv_h::test();
+}
+
|