// http://www.boost.org/libs/config
// Revision History (excluding minor changes for specific compilers)
+// 29 Mar 01 BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS (Daryle Walker)
+// 16 Mar 01 Added BOOST_VERSION (Jens Maurer)
+// 06 Mar 01 Refactored EDG checks for Intel C++ (Dave Abrahams)
+// 04 Mar 01 Factored EDG checks, added BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+// for Intel C++ 5.0 (Dave Abrahams)
+// 17 Feb 01 BOOST_NO_CV_SPECIALIZATIONS
+// BOOST_NO_CV_VOID_SPECIALIZATIONS (John Maddock)
+// 11 Feb 01 Added BOOST_STATIC_CONSTANT (Dave Abrahams)
+// 20 Jan 01 BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS moved here from
+// cast.hpp. Added missing BOOST_NO_STRINGSTREAM which some
+// boost code seemed to depend on. (Dave Abrahams)
+// 13 Jan 01 SGI MIPSpro and Compaq Tru64 Unix compiler support added
+// (Jens Maurer)
+// 13 Jan 01 BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP (Jens Maurer)
+// 17 Nov 00 BOOST_NO_AUTO_PTR (John Maddock)
+// 4 Oct 00 BOOST_NO_STD_MIN_MAX (Jeremy Siek)
+// 29 Sep 00 BOOST_NO_INTEGRAL_INT64_T (Jens Maurer)
// 25 Sep 00 BOOST_NO_STD_ALLOCATOR (Jeremy Siek)
// 18 SEP 00 BOOST_NO_SLIST, BOOST_NO_HASH,
// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
#ifndef BOOST_CONFIG_HPP
#define BOOST_CONFIG_HPP
+#define BOOST_VERSION 102400
+
+// BOOST_VERSION % 100 is the sub-minor version
+// BOOST_VERSION / 100 % 1000 is the minor version
+// BOOST_VERSION / 100000 is the major version
+
+
// Conformance Flag Macros -------------------------------------------------//
//
// Conformance flag macros should identify the absence of C++ Standard
// burden where it should be, on non-conforming compilers. In the future,
// hopefully, less rather than more conformance flags will have to be defined.
+// BOOST_NO_CV_SPECIALIZATIONS: if template specializations for cv-qualified
+// types conflict with a specialization for unqualififed type.
+
+// BOOST_NO_CV_VOID_SPECIALIZATIONS: if template specializations for cv-void
+// types conflict with a specialization for void.
+
+// BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP: Compiler does not implement
+// argument-dependent lookup (also named Koenig lookup); see std::3.4.2
+// [basic.koenig.lookup]
+
// BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS: Template value
// parameters cannot have a dependent type, for example
// "template<class T, typename T::type value> class X { ... };"
+// BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS: Can only use deduced
+// template arguments when calling function template instantiations.
+
// BOOST_NO_INCLASS_MEMBER_INITIALIZATION: Compiler violates std::9.4.2/4.
+// BOOST_NO_INT64_T: <boost/cstdint.hpp> does not support 64-bit integer
+// types. (Set by <boost/cstdint.hpp> rather than <boost/config.hpp>).
+
+// BOOST_NO_INTEGRAL_INT64_T: int64_t as defined by <boost/cstdint.hpp> is
+// not an integral type.
+
+// BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS: constants such as
+// numeric_limits<T>::is_signed are not available for use at compile-time.
+
// BOOST_NO_MEMBER_TEMPLATES: Member template functions not fully supported.
// Also see BOOST_MSVC6_MEMBER_TEMPLATES in the Compiler Control section below.
// that imports a template from the global namespace into a named namespace.
// Probably Borland specific.
+// BOOST_NO_AUTO_PTR: If the compiler / library supplies non-standard or broken
+// std::auto_ptr.
+
+// BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING: The compiler does not perform
+// function template ordering or its function template ordering is incorrect.
+//
+// template<typename T> void f(T); // #1
+// template<typename T, typename U> void f(T (*)(U)); // #2
+// void bar(int);
+// f(&bar); // should choose #2.
+
+// BOOST_NO_DEPENDENT_NESTED_DERIVATIONS: The compiler fails to compile
+// a nested class that has a dependent base class:
+// template<typename T>
+// struct foo : public T {
+// template<typename U>
+// struct bar : public T, public U {};
+// };
+
+//
// Compiler Control or Information Macros ----------------------------------//
//
// Compilers often supply features outside of the C++ Standard which need to be
// BOOST_DECL: Certain compilers for Microsoft operating systems require
// non-standard class and function decoration if dynamic load library linking
-// is desired. BOOST_DECL supplies that decoration, defaulting to a nul string
-// so that it is harmless when not required. Boost does not encourage the use
-// of BOOST_DECL - it is non-standard and to be avoided if practical to do so.
-
-// BOOST_DECL_EXPORTS: User defined, BOOST_DECL_EXPORTS causes BOOST_DECL to
-// be defined as __declspec(dllexport) rather than __declspec(dllimport).
+// is desired. BOOST_DECL supplies that decoration. Boost does not require
+// use of BOOST_DECL - it is non-standard and to be avoided if practical to do
+// so. Even compilers requiring it for DLL's only require it in certain cases.
+//
+// BOOST_DECL_EXPORTS: User defined, usually via command line or IDE,
+// it causes BOOST_DECL to be defined as __declspec(dllexport).
+//
+// BOOST_DECL_IMPORTS: User defined, usually via command line or IDE,
+// it causes BOOST_DECL to be defined as __declspec(dllimport).
+//
+// If neither BOOST_DECL_EXPORTS nor BOOST_DECL_IMPORTS is defined, or if
+// the compiler does not require __declspec() decoration, BOOST_DECL is
+// defined as a null string.
// BOOST_MSVC6_MEMBER_TEMPLATES: Microsoft Visual C++ 6.0 has enough member
// template idiosyncrasies (being polite) that BOOST_NO_MEMBER_TEMPLATES is
// BOOST_NO_SLIST: The C++ implementation does not provide the slist class.
+// BOOST_NO_STRINGSTREAM: The C++ implementation does not provide the <sstream> header.
+
// BOOST_NO_HASH: The C++ implementation does not provide the hash_set
// or hash_map classes.
+// BOOST_STD_EXTENSION_NAMESPACE: The name of the namespace in which the slist,
+// hash_set and/or hash_map templates are defined in this implementation (if any).
+
// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS: The standard library does not provide
// templated iterator constructors for its containers.
// BOOST_NO_STD_ALLOCATOR: The C++ standard library does not provide
// a standards conforming std::allocator.
-// Compilers are listed in alphabetic order (except VC++ last - see below)---//
+// BOOST_NO_STD_MIN_MAX: The C++ standard library does not provide
+// the min() and max() template functions that should be in <algorithm>.
-// GNU CC (also known as GCC and G++) --------------------------------------//
+// Common compiler front-ends precede all compiler checks ------------------//
-# if defined __GNUC__
-# if __GNUC__ == 2 && __GNUC_MINOR__ <= 95
-# include <iterator> // not sure this is the right way to do this -JGS
-# if !defined(_CXXRT_STD) && !defined(__SGI_STL) // need to ask Dietmar about this -JGS
-# define BOOST_NO_STD_ITERATOR
-# define BOOST_NO_LIMITS
-# endif
-# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-# define BOOST_NO_OPERATORS_IN_NAMESPACE
-# endif
-# if __GNUC__ == 2 && __GNUC_MINOR__ <= 8
-# define BOOST_NO_MEMBER_TEMPLATES
+// Edison Design Group front-ends
+# if defined(__EDG_VERSION__)
+# if __EDG_VERSION__ <= 241
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
# endif
-// Kai C++ ------------------------------------------------------------------//
+# endif
-#elif defined __KCC
-# define BOOST_NO_SLIST
-# define BOOST_NO_HASH
+// Compiler-specific checks -------------------------------------------------//
+// Compilers are listed in alphabetic order by vendor name
+// (except VC++ must be last - see below)
-// Greenhills C++ -----------------------------------------------------------//
+// Borland ------------------------------------------------------------------//
-#elif defined __ghs
+#if defined __BORLANDC__
# define BOOST_NO_SLIST
# define BOOST_NO_HASH
-
-// Borland ------------------------------------------------------------------//
-
-#elif defined __BORLANDC__
+// pull in standard library version:
+# include <memory>
# if __BORLANDC__ <= 0x0551
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_INTEGRAL_INT64_T
# define BOOST_NO_PRIVATE_IN_AGGREGATE
# endif
# if __BORLANDC__ <= 0x0550
# endif
# endif
# if defined BOOST_DECL_EXPORTS
+# if defined BOOST_DECL_IMPORTS
+# error Not valid to define both BOOST_DECL_EXPORTS and BOOST_DECL_IMPORTS
+# endif
# define BOOST_DECL __declspec(dllexport)
-# else
+# elif defined BOOST_DECL_IMPORTS
# define BOOST_DECL __declspec(dllimport)
+# else
+# define BOOST_DECL
+# endif
+#if (__BORLANDC__ == 0x550) || (__BORLANDC__ == 0x551)
+// <climits> is partly broken, some macos define symbols that are really in
+// namespace std, so you end up having to use illegal constructs like
+// std::DBL_MAX, as a fix we'll just include float.h and have done with:
+#include <float.h>
+#endif
+# define BOOST_NO_CV_SPECIALIZATIONS
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
+
+// Comeau C++ ----------------------------------------------------------------//
+
+# elif defined __COMO__
+# if __COMO_VERSION__ <= 4245
+# define BOOST_FUNCTION_USE_VIRTUAL_FUNCTIONS
+# if defined(_MSC_VER) && _MSC_VER <= 1200
+# define BOOST_NO_STDC_NAMESPACE
+# endif
# endif
-// Intel -------------------------------------------------------------------//
+// Compaq Tru64 Unix cxx ---------------------------------------------------
+
+# elif defined __DECCXX
+# define BOOST_NO_SLIST
+# define BOOST_NO_HASH
+
+// GNU CC (also known as GCC and G++) --------------------------------------//
+
+# elif defined __GNUC__
+# if __GNUC__ == 2 && __GNUC_MINOR__ == 91
+ // egcs 1.1 won't parse smart_ptr.hpp without this:
+# define BOOST_NO_AUTO_PTR
+# endif
+# if __GNUC__ == 2 && __GNUC_MINOR__ <= 97
+# include "LString.h" // not sure this is the right way to do this -JGS
+# if defined(__BASTRING__) && !defined(__GLIBCPP__) && !defined(_CXXRT_STD) && !defined(__SGI_STL) // need to ask Dietmar about this -JGS
+ // this should only detect the stdlibc++ that ships with gcc, and
+ // not any replacements that may be installed...
+# define BOOST_NO_STD_ITERATOR
+# define BOOST_NO_LIMITS
+# endif
+# if !defined(_CXXRT_STD) && !defined(__SGI_STL_OWN_IOSTREAMS)
+# define BOOST_NO_STRINGSTREAM
+# endif
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING
+# endif
+# if __GNUC__ == 2 && __GNUC_MINOR__ <= 8
+# define BOOST_NO_MEMBER_TEMPLATES
+# endif
+# if __GNUC__ >= 3
+# include <iterator>
+# if defined(__GLIBCPP__)
+ // The new GNU C++ library has slist, hash_map, hash_set headers
+ // in <ext/*>, but client code assumes they're in <*> --- Jens M.
+# define BOOST_NO_SLIST
+# define BOOST_NO_HASH
+# endif
+# endif
+
+// Greenhills C++ -----------------------------------------------------------//
+
+#elif defined __ghs
+# define BOOST_NO_SLIST
+# define BOOST_NO_HASH
+
+// HP aCC -------------------------------------------------------------------
+
+# elif defined __HP_aCC
+# define BOOST_NO_SLIST
+# define BOOST_NO_HASH
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+ // (support for HP aCC is not complete, see the regression test results)
+
+// Intel on Linux -----------------------------------------------------------//
+
+#elif defined __ICC
+# include <iterator>
+# ifdef _CPPLIB_VER
+ // shipped with Dinkumware 3.10, which has a different hash_map
+# define BOOST_NO_HASH
+# endif
+
+// Intel on Windows --------------------------------------------------------//
# elif defined __ICL
+# if __ICL <= 500
+ // Intel C++ 5.0.1 uses EDG 2.45, but fails to activate Koenig lookup
+ // in the frontend even in "strict" mode. (reported by Kirk Klobe)
+# ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# endif
+# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING
+# define BOOST_NO_INTRINSIC_WCHAR_T // tentative addition - required for VC6 compatibility? (added by JM 19 Feb 2001)
+# endif
# include <iterator> // not sure this is the right way to do this -JGS
# if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES)
// a perfectly good implementation of std::iterator is supplied
# elif defined(__SGI_STL_ITERATOR)
# define BOOST_NO_STD_ITERATOR // No std::iterator in this case
+# elif defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
+# // full dinkumware 3.06 and above
+# define BOOST_NO_HASH
+# define BOOST_NO_STD_ITERATOR_TRAITS
+# if !_GLOBAL_USING // can be defined in yvals.h
+# define BOOST_NO_STDC_NAMESPACE
+# endif
# else // assume using dinkumware's STL that comes with VC++ 6.0
# define BOOST_MSVC_STD_ITERATOR
# define BOOST_NO_STD_ITERATOR_TRAITS
# define BOOST_NO_HASH
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
# define BOOST_NO_STD_ALLOCATOR
+# define BOOST_NO_STD_MIN_MAX
# endif
+// Kai C++ ----------------------------------------------------------------
+
+#elif defined __KCC
+# define BOOST_NO_SLIST
+# define BOOST_NO_HASH
-// Metrowerks CodeWarrior --------------------------------------------------//
+# if __KCC_VERSION <= 4001
+ // at least on Sun, the contents of <cwchar> is not in namespace std
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+
+// Metrowerks CodeWarrior -------------------------------------------------//
# elif defined __MWERKS__
-# if __MWERKS__ <= 0x4000
+# if __MWERKS__ <= 0x2405 // 7
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
# endif
-# if __MWERKS__ <= 0x2301
+# if __MWERKS__ <= 0x2401 // 6.2
+# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING
+# endif
+# if __MWERKS__ <= 0x2301 // 5.3
# define BOOST_NO_POINTER_TO_MEMBER_CONST
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_HASH
+# endif
+# if __MWERKS__ >= 0x2400
+# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks
# endif
# if __MWERKS__ >= 0x2300
# define BOOST_SYSTEM_HAS_STDINT_H
# endif
# if defined BOOST_DECL_EXPORTS
+# if defined BOOST_DECL_IMPORTS
+# error Not valid to define both BOOST_DECL_EXPORTS and BOOST_DECL_IMPORTS
+# endif
# define BOOST_DECL __declspec(dllexport)
-# else
+# elif defined BOOST_DECL_IMPORTS
# define BOOST_DECL __declspec(dllimport)
+# else
+# define BOOST_DECL
+# endif
+
+// SGI MIPSpro C++ ---------------------------------------------------------//
+
+# elif defined __sgi
+ // This is a generic STLport condition and could be moved elsewhere.
+# include <iterator>
+# if defined(__SGI_STL_PORT) && !defined(__STL_MEMBER_TEMPLATE_CLASSES) && !defined(_STLP_MEMBER_TEMPLATE_CLASSES)
+# define BOOST_NO_STD_ALLOCATOR
# endif
-// Sun Workshop Compiler C++ ------------------------------------------------//
+// Sun Workshop Compiler C++ -----------------------------------------------//
# elif defined __SUNPRO_CC
+# if __SUNPRO_CC <= 0x520
+# define BOOST_NO_SLIST
+# define BOOST_NO_HASH
+# define BOOST_NO_STD_ITERATOR_TRAITS
+# define BOOST_NO_STD_ALLOCATOR
+
+ // although sunpro 5.1 supports the syntax for
+ // inline initialization it often gets the value
+ // wrong, especially where the value is computed
+ // from other constants (J Maddock 6th May 2001)
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+
+ // although sunpro 5.1 supports the syntax for
+ // partial specialization, it often seems to
+ // bind to the wrong specialization. Better
+ // to disable it until suppport becomes more stable
+ // (J Maddock 6th May 2001).
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# endif
# if __SUNPRO_CC <= 0x500
# define BOOST_NO_MEMBER_TEMPLATES
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
# endif
-// Microsoft Visual C++ (excluding Intel/EDG front end) --------------------//
+// Microsoft Visual C++ (excluding Intel/EDG front end) --------------------
//
// Must remain the last #elif since some other vendors (Metrowerks, for
// example) also #define _MSC_VER
# if _MSC_VER <= 1200 // 1200 == VC++ 6.0
# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
# define BOOST_NO_PRIVATE_IN_AGGREGATE
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+# define BOOST_NO_INTEGRAL_INT64_T
# define BOOST_NO_INTRINSIC_WCHAR_T
// VC++ 6.0 has member templates but they have numerous problems including
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
-
+# define BOOST_WEAK_FUNCTION_TEMPLATE_ORDERING
# include <iterator> // not sure this is the right way to do this -JGS
# if __SGI_STL_PORT >= 0x400 || __SGI_STL_PORT >= 0x321 && defined(__STL_USE_NAMESPACES)
// a perfectly good implementation of std::iterator is supplied
+ // A conforming allocator is supplied, but the compiler cannot cope
+ // when using "rebind". (Douglas Gregor)
+# define BOOST_NO_STD_ALLOCATOR
# elif defined(__SGI_STL_ITERATOR)
# define BOOST_NO_STD_ITERATOR // No std::iterator in this case
+# elif defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
+ // full dinkumware 3.06 and above
+# define BOOST_NO_HASH
+# define BOOST_NO_STD_ITERATOR_TRAITS
+# ifndef _GLOBAL_USING // can be defined in yvals.h
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+# if _CPPLIB_VER < 308 // fix due to kensai@pacbell.net
+# define BOOST_MSVC_STD_ITERATOR
+# endif
# else
-# define BOOST_MSVC_STD_ITERATOR 1
+# define BOOST_MSVC_STD_ITERATOR
# define BOOST_NO_SLIST
# define BOOST_NO_HASH
# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
# define BOOST_NO_STD_ALLOCATOR
+# ifndef _CPPLIB_VER
+ // Updated Dinkum library defines this, and provides
+ // its own min and max definitions.
+# define BOOST_NO_STD_MIN_MAX
+# undef min
+# undef max
+# endif
+# ifndef NOMINMAX
+ // avoid spurious NOMINMAX redefinition warning
+# define NOMINMAX
+# endif
# endif
# define BOOST_NO_STD_ITERATOR_TRAITS
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
// Make sure at least one standard library header is included so that library
// Determine if the standard library implementation is already pulling names
// into std. STLport defines the following if so. (Ed Brey 5 Jun 00)
-# ifndef __STL_IMPORT_VENDOR_CSTD
+# if !defined( __STL_IMPORT_VENDOR_CSTD ) || defined( __STL_NO_CSTD_FUNCTION_IMPORTS )
# define BOOST_NO_STDC_NAMESPACE
# endif
# endif
# if defined BOOST_DECL_EXPORTS
+# if defined BOOST_DECL_IMPORTS
+# error Not valid to define both BOOST_DECL_EXPORTS and BOOST_DECL_IMPORTS
+# endif
# define BOOST_DECL __declspec(dllexport)
-# else
+# elif defined BOOST_DECL_IMPORTS
# define BOOST_DECL __declspec(dllimport)
+# else
+# define BOOST_DECL
# endif
# endif // Microsoft (excluding Intel/EDG frontend)
// end of compiler specific portion ----------------------------------------//
+#if defined(BOOST_NO_LIMITS) || (defined(_RWSTD_VER) && defined(__BORLANDC__) && _RWSTD_VER < 0x020300) || (defined(__SGI_STL_PORT) && __SGI_STL_PORT <= 0x410 && defined(__STL_STATIC_CONST_INIT_BUG))
+// STLPort 4.0 doesn't define the static constants in numeric_limits<> so that they
+// can be used at compile time if the compiler bug indicated by
+// __STL_STATIC_CONST_INIT_BUG is present.
+
+// Rogue wave STL (C++ Builder) also has broken numeric_limits
+// with default template defining members out of line.
+// However, Compaq C++ also uses RogueWave (version 0x0203) and it's ok.
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+#endif
+
+#if defined(__hpux)
+// HP-UX has a nice stdint.h in a different location, see boost/cstdint.hpp
+# define BOOST_SYSTEM_HAS_STDINT_H
+#endif
+
+#ifndef BOOST_STD_EXTENSION_NAMESPACE
+# define BOOST_STD_EXTENSION_NAMESPACE std
+#endif
+
// Check for old name "BOOST_NMEMBER_TEMPLATES" for compatibility -----------//
// Don't use BOOST_NMEMBER_TEMPLATES. It is deprecated and will be removed soon.
#if defined( BOOST_NMEMBER_TEMPLATES ) && !defined( BOOST_NO_MEMBER_TEMPLATES )
// using ::wchar_t; removed since wchar_t is a C++ built-in type (Ed Brey)
# endif
+#ifdef BOOST_NO_STD_MIN_MAX
+namespace std {
+ template <class _Tp>
+ inline const _Tp& min(const _Tp& __a, const _Tp& __b) {
+ return __b < __a ? __b : __a;
+ }
+ template <class _Tp>
+ inline const _Tp& max(const _Tp& __a, const _Tp& __b) {
+ return __a < __b ? __b : __a;
+ }
+#ifdef BOOST_MSVC
+ inline long min(long __a, long __b) {
+ return __b < __a ? __b : __a;
+ }
+ inline long max(long __a, long __b) {
+ return __a < __b ? __b : __a;
+ }
+#endif
+}
+#endif
+
+// BOOST_STATIC_CONSTANT workaround --------------------------------------- //
+// On compilers which don't allow in-class initialization of static integral
+// constant members, we must use enums as a workaround if we want the constants
+// to be available at compile-time. This macro gives us a convenient way to
+// declare such constants.
+#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment }
+#else
+# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
+#endif
#endif // BOOST_CONFIG_HPP
+
+
+
+
+
+
+