]> git.lyx.org Git - lyx.git/blobdiff - boost/boost/config.hpp
ws change
[lyx.git] / boost / boost / config.hpp
index 59fc15e884701895333bbfc3314260f7e2d0ca23..b942095395c79c1f8dbe261547903cf290bacc18 100644 (file)
 //  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
+
+
+
+
+
+
+