update to boost 1.41.0

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32081 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Peter Kümmel 2009-11-19 15:12:36 +00:00
parent 9755da5440
commit 200880333a
41 changed files with 266 additions and 117 deletions

View File

@ -19,6 +19,17 @@
#include <boost/throw_exception.hpp> #include <boost/throw_exception.hpp>
#include <boost/static_assert.hpp> #include <boost/static_assert.hpp>
// See boost/python/type_id.hpp
// TODO: add BOOST_TYPEID_COMPARE_BY_NAME to config.hpp
# if (defined(__GNUC__) && __GNUC__ >= 3) \
|| defined(_AIX) \
|| ( defined(__sgi) && defined(__host_mips)) \
|| (defined(__hpux) && defined(__HP_aCC)) \
|| (defined(linux) && defined(__INTEL_COMPILER) && defined(__ICC))
# define BOOST_AUX_ANY_TYPE_ID_NAME
#include <cstring>
# endif
namespace boost namespace boost
{ {
class any class any
@ -164,9 +175,14 @@ namespace boost
template<typename ValueType> template<typename ValueType>
ValueType * any_cast(any * operand) ValueType * any_cast(any * operand)
{ {
return operand && operand->type() == typeid(ValueType) return operand &&
? &static_cast<any::holder<ValueType> *>(operand->content)->held #ifdef BOOST_AUX_ANY_TYPE_ID_NAME
: 0; std::strcmp(operand->type().name(), typeid(ValueType).name()) == 0
#else
operand->type() == typeid(ValueType)
#endif
? &static_cast<any::holder<ValueType> *>(operand->content)->held
: 0;
} }
template<typename ValueType> template<typename ValueType>

View File

@ -17,7 +17,7 @@
#endif #endif
// last known compiler version: // last known compiler version:
#if (__BORLANDC__ > 0x610) #if (__BORLANDC__ > 0x613)
//# if defined(BOOST_ASSERT_CONFIG) //# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results" # error "Unknown compiler version - please run the configure tests and report the results"
//# else //# else
@ -107,30 +107,29 @@
# endif # endif
#endif #endif
// Borland C++ Builder 2007 December 2007 Update and below: #if (__BORLANDC__ <= 0x613) // Beman has asked Alisdair for more info
//#if (__BORLANDC__ <= 0x593)
#if (__BORLANDC__ <= 0x610) // Beman has asked Alisdair for more info
// we shouldn't really need this - but too many things choke // we shouldn't really need this - but too many things choke
// without it, this needs more investigation: // without it, this needs more investigation:
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
# define BOOST_NO_IS_ABSTRACT # define BOOST_NO_IS_ABSTRACT
# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS # define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
# define BOOST_NO_USING_TEMPLATE
# define BOOST_SP_NO_SP_CONVERTIBLE
// Temporary workaround // Temporary workaround
#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
#endif #endif
// Borland C++ Builder 2008 and below: // Borland C++ Builder 2008 and below:
#if (__BORLANDC__ <= 0x601)
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
# define BOOST_ILLEGAL_CV_REFERENCES
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS # define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP # define BOOST_NO_TWO_PHASE_NAME_LOOKUP
# define BOOST_NO_USING_TEMPLATE
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE # define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
# define BOOST_NO_NESTED_FRIENDSHIP # define BOOST_NO_NESTED_FRIENDSHIP
# define BOOST_NO_TYPENAME_WITH_CTOR # define BOOST_NO_TYPENAME_WITH_CTOR
#if (__BORLANDC__ < 0x600)
# define BOOST_ILLEGAL_CV_REFERENCES
#endif #endif
// //
@ -169,12 +168,14 @@
#define BOOST_NO_CONSTEXPR #define BOOST_NO_CONSTEXPR
#define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported #define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported
#define BOOST_NO_VARIADIC_TEMPLATES #define BOOST_NO_VARIADIC_TEMPLATES
@ -235,7 +236,7 @@
// //
// ABI fixing headers: // ABI fixing headers:
// //
#if __BORLANDC__ < 0x600 // not implemented for version 6 compiler yet #if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet
#ifndef BOOST_ABI_PREFIX #ifndef BOOST_ABI_PREFIX
# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp" # define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
#endif #endif

View File

@ -20,7 +20,7 @@
// //
// versions check: // versions check:
// last known and checked version is 0x610 // last known and checked version is 0x610
#if (__CODEGEARC__ > 0x610) #if (__CODEGEARC__ > 0x613)
# if defined(BOOST_ASSERT_CONFIG) # if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results" # error "Unknown compiler version - please run the configure tests and report the results"
# else # else
@ -29,7 +29,7 @@
#endif #endif
// CodeGear C++ Builder 2009 // CodeGear C++ Builder 2009
#if (__CODEGEARC__ <= 0x610) #if (__CODEGEARC__ <= 0x613)
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS # define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
@ -42,6 +42,7 @@
# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type # define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member # define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
# define BOOST_SP_NO_SP_CONVERTIBLE
// Temporary hack, until specific MPL preprocessed headers are generated // Temporary hack, until specific MPL preprocessed headers are generated
# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS # define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
@ -80,11 +81,13 @@
#define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS

View File

@ -75,11 +75,13 @@
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS

View File

@ -75,6 +75,7 @@
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS

View File

@ -64,6 +64,9 @@
// All problems to gcc-3.x and earlier here: // All problems to gcc-3.x and earlier here:
// //
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_TWO_PHASE_NAME_LOOKUP
# ifdef __OPEN64__
# define BOOST_NO_IS_ABSTRACT
# endif
#endif #endif
#ifndef __EXCEPTIONS #ifndef __EXCEPTIONS
@ -104,15 +107,12 @@
// C++0x features not implemented in any GCC version // C++0x features not implemented in any GCC version
// //
#define BOOST_NO_CONSTEXPR #define BOOST_NO_CONSTEXPR
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_SCOPED_ENUMS until it
// gets fixed. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064
#define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
// C++0x features in 4.3.n and later // C++0x features in 4.3.n and later
// //
@ -126,6 +126,7 @@
# define BOOST_HAS_VARIADIC_TMPL # define BOOST_HAS_VARIADIC_TMPL
#else #else
# define BOOST_NO_DECLTYPE # define BOOST_NO_DECLTYPE
# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
# define BOOST_NO_RVALUE_REFERENCES # define BOOST_NO_RVALUE_REFERENCES
# define BOOST_NO_STATIC_ASSERT # define BOOST_NO_STATIC_ASSERT
@ -149,7 +150,24 @@
# define BOOST_NO_DELETED_FUNCTIONS # define BOOST_NO_DELETED_FUNCTIONS
# define BOOST_NO_INITIALIZER_LISTS # define BOOST_NO_INITIALIZER_LISTS
# define BOOST_NO_SCOPED_ENUMS # define BOOST_NO_SCOPED_ENUMS
# define BOOST_NO_UNICODE_LITERALS #endif
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4)
# define BOOST_NO_SFINAE_EXPR
#endif
// C++0x features in 4.4.1 and later
//
#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40401) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_SCOPED_ENUMS before 4.4.1
// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064
# define BOOST_NO_SCOPED_ENUMS
#endif
// C++0x features in 4.5.n and later
//
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#endif #endif
// ConceptGCC compiler: // ConceptGCC compiler:
@ -172,8 +190,8 @@
# error "Compiler not configured - please reconfigure" # error "Compiler not configured - please reconfigure"
#endif #endif
// //
// last known and checked version is 4.3 (Pre-release): // last known and checked version is 4.4 (Pre-release):
#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 3)) #if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 4))
# if defined(BOOST_ASSERT_CONFIG) # if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results" # error "Unknown compiler version - please run the configure tests and report the results"
# else # else

View File

@ -103,12 +103,14 @@
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS

View File

@ -99,7 +99,7 @@
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
# endif # endif
#endif #endif
#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1100) #if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1110)
// GCC or VC emulation: // GCC or VC emulation:
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_TWO_PHASE_NAME_LOOKUP
#endif #endif
@ -159,7 +159,7 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
// //
// last known and checked version: // last known and checked version:
#if (BOOST_INTEL_CXX_VERSION > 1100) #if (BOOST_INTEL_CXX_VERSION > 1110)
# if defined(BOOST_ASSERT_CONFIG) # if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results" # error "Unknown compiler version - please run the configure tests and report the results"
# elif defined(_MSC_VER) # elif defined(_MSC_VER)

View File

@ -103,11 +103,13 @@
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS

View File

@ -51,12 +51,14 @@
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS

View File

@ -43,12 +43,14 @@
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS

View File

@ -96,12 +96,14 @@
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS

View File

@ -72,11 +72,13 @@
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_LAMBDAS #define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS

View File

@ -14,6 +14,12 @@
#define BOOST_MSVC _MSC_VER #define BOOST_MSVC _MSC_VER
#if _MSC_FULL_VER > 100000000
# define BOOST_MSVC_FULL_VER _MSC_FULL_VER
#else
# define BOOST_MSVC_FULL_VER (_MSC_FULL_VER * 10)
#endif
// turn off the warnings before we #include anything // turn off the warnings before we #include anything
#pragma warning( disable : 4503 ) // warning: decorated name length exceeded #pragma warning( disable : 4503 ) // warning: decorated name length exceeded
@ -168,10 +174,12 @@
#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_EXTERN_TEMPLATE
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_NULLPTR #define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS #define BOOST_NO_RAW_LITERALS
#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES #define BOOST_NO_VARIADIC_TEMPLATES

View File

@ -55,8 +55,10 @@
# define BOOST_HAS_MACRO_USE_FACET # define BOOST_HAS_MACRO_USE_FACET
# ifndef _CPPLIB_VER # ifndef _CPPLIB_VER
// Updated Dinkum library defines this, and provides // Updated Dinkum library defines this, and provides
// its own min and max definitions. // its own min and max definitions, as does MTA version.
# define BOOST_NO_STD_MIN_MAX # ifndef __MTA__
# define BOOST_NO_STD_MIN_MAX
# endif
# define BOOST_NO_MS_INT64_NUMERIC_LIMITS # define BOOST_NO_MS_INT64_NUMERIC_LIMITS
# endif # endif
#endif #endif

View File

@ -50,7 +50,7 @@
# define BOOST_BYTE_ORDER 1234 # define BOOST_BYTE_ORDER 1234
#elif defined(__sparc) || defined(__sparc__) \ #elif defined(__sparc) || defined(__sparc__) \
|| defined(_POWER) || defined(__powerpc__) \ || defined(_POWER) || defined(__powerpc__) \
|| defined(__ppc__) || defined(__hpux) \ || defined(__ppc__) || defined(__hpux) || defined(__hppa) \
|| defined(_MIPSEB) || defined(_POWER) \ || defined(_MIPSEB) || defined(_POWER) \
|| defined(__s390__) || defined(__s390__)
# define BOOST_BIG_ENDIAN # define BOOST_BIG_ENDIAN

View File

@ -20,6 +20,7 @@
#include <boost/exception/errinfo_file_open_mode.hpp> #include <boost/exception/errinfo_file_open_mode.hpp>
#include <boost/exception/errinfo_type_info_name.hpp> #include <boost/exception/errinfo_type_info_name.hpp>
#ifndef BOOST_NO_EXCEPTIONS #ifndef BOOST_NO_EXCEPTIONS
#include <boost/exception/errinfo_nested_exception.hpp>
#include <boost/exception_ptr.hpp> #include <boost/exception_ptr.hpp>
#endif #endif

View File

@ -49,12 +49,18 @@ boost
return value_; return value_;
} }
value_type &
value()
{
return value_;
}
private: private:
char const * tag_typeid_name() const; char const * tag_typeid_name() const;
std::string value_as_string() const; std::string value_as_string() const;
value_type const value_; value_type value_;
}; };
} }

View File

@ -19,6 +19,13 @@ boost
virtual void _rethrow() const=0; virtual void _rethrow() const=0;
virtual bool _empty() const=0; virtual bool _empty() const=0;
protected:
virtual
~exception_ptr_base() throw()
{
}
}; };
} }
} }

View File

@ -44,14 +44,14 @@ boost
inline inline
char const * char const *
get_diagnostic_information( exception const & x ) get_diagnostic_information( exception const & x, char const * header )
{ {
if( error_info_container * c=x.data_.get() ) if( error_info_container * c=x.data_.get() )
#ifndef BOOST_NO_EXCEPTIONS #ifndef BOOST_NO_EXCEPTIONS
try try
{ {
#endif #endif
return c->diagnostic_information(); return c->diagnostic_information(header);
#ifndef BOOST_NO_EXCEPTIONS #ifndef BOOST_NO_EXCEPTIONS
} }
catch(...) catch(...)
@ -63,7 +63,7 @@ boost
inline inline
std::string std::string
diagnostic_information_impl( boost::exception const * be, std::exception const * se ) diagnostic_information_impl( boost::exception const * be, std::exception const * se, bool with_what )
{ {
BOOST_ASSERT(be||se); BOOST_ASSERT(be||se);
#ifndef BOOST_NO_RTTI #ifndef BOOST_NO_RTTI
@ -72,6 +72,13 @@ boost
if( !be ) if( !be )
be = dynamic_cast<boost::exception const *>(se); be = dynamic_cast<boost::exception const *>(se);
#endif #endif
char const * wh=0;
if( with_what && se )
{
wh=se->what();
if( be && exception_detail::get_diagnostic_information(*be,0)==wh )
return wh;
}
std::ostringstream tmp; std::ostringstream tmp;
if( be ) if( be )
{ {
@ -92,12 +99,12 @@ boost
tmp << std::string("Dynamic exception type: ") << tmp << std::string("Dynamic exception type: ") <<
(be?BOOST_EXCEPTION_DYNAMIC_TYPEID(*be):BOOST_EXCEPTION_DYNAMIC_TYPEID(*se)).name() << '\n'; (be?BOOST_EXCEPTION_DYNAMIC_TYPEID(*be):BOOST_EXCEPTION_DYNAMIC_TYPEID(*se)).name() << '\n';
#endif #endif
if( se ) if( with_what && se )
tmp << "std::exception::what: " << se->what() << '\n'; tmp << "std::exception::what: " << wh << '\n';
if( be ) if( be )
if( char const * s=exception_detail::get_diagnostic_information(*be) ) if( char const * s=exception_detail::get_diagnostic_information(*be,tmp.str().c_str()) )
if( *s ) if( *s )
tmp << s; return s;
return tmp.str(); return tmp.str();
} }
} }
@ -107,7 +114,7 @@ boost
typename enable_if<exception_detail::enable_boost_exception_overload<T>,std::string>::type typename enable_if<exception_detail::enable_boost_exception_overload<T>,std::string>::type
diagnostic_information( T const & e ) diagnostic_information( T const & e )
{ {
return exception_detail::diagnostic_information_impl(&e,0); return exception_detail::diagnostic_information_impl(&e,0,true);
} }
template <class T> template <class T>
@ -115,7 +122,28 @@ boost
typename enable_if<exception_detail::enable_std_exception_overload<T>,std::string>::type typename enable_if<exception_detail::enable_std_exception_overload<T>,std::string>::type
diagnostic_information( T const & e ) diagnostic_information( T const & e )
{ {
return exception_detail::diagnostic_information_impl(0,&e); return exception_detail::diagnostic_information_impl(0,&e,true);
}
inline
char const *
diagnostic_information_what( exception const & e ) throw()
{
char const * w=0;
#ifndef BOOST_NO_EXCEPTIONS
try
{
#endif
(void) exception_detail::diagnostic_information_impl(&e,0,false);
return exception_detail::get_diagnostic_information(e,0);
#ifndef BOOST_NO_EXCEPTIONS
}
catch(
... )
{
}
#endif
return w;
} }
} }
@ -131,7 +159,7 @@ boost
boost::exception const * be=current_exception_cast<boost::exception const>(); boost::exception const * be=current_exception_cast<boost::exception const>();
std::exception const * se=current_exception_cast<std::exception const>(); std::exception const * se=current_exception_cast<std::exception const>();
if( be || se ) if( be || se )
return exception_detail::diagnostic_information_impl(be,se); return exception_detail::diagnostic_information_impl(be,se,true);
else else
return "No diagnostic information available."; return "No diagnostic information available.";
} }

View File

@ -143,9 +143,9 @@ boost
struct struct
error_info_container error_info_container
{ {
virtual char const * diagnostic_information() const = 0; virtual char const * diagnostic_information( char const * ) const = 0;
virtual shared_ptr<error_info_base const> get( type_info_ const & ) const = 0; virtual shared_ptr<error_info_base> get( type_info_ const & ) const = 0;
virtual void set( shared_ptr<error_info_base const> const &, type_info_ const & ) = 0; virtual void set( shared_ptr<error_info_base> const &, type_info_ const & ) = 0;
virtual void add_ref() const = 0; virtual void add_ref() const = 0;
virtual void release() const = 0; virtual void release() const = 0;
@ -169,7 +169,7 @@ boost
template <> template <>
struct get_info<throw_line>; struct get_info<throw_line>;
char const * get_diagnostic_information( exception const & ); char const * get_diagnostic_information( exception const &, char const * );
} }
class class
@ -231,7 +231,7 @@ boost
return x; return x;
} }
friend char const * exception_detail::get_diagnostic_information( exception const & ); friend char const * exception_detail::get_diagnostic_information( exception const &, char const * );
template <class E,class Tag,class T> template <class E,class Tag,class T>
friend E const & operator<<( E const &, error_info<Tag,T> const & ); friend E const & operator<<( E const &, error_info<Tag,T> const & );

View File

@ -22,16 +22,16 @@ boost
get_info get_info
{ {
static static
typename ErrorInfo::value_type const * typename ErrorInfo::value_type *
get( exception const & x ) get( exception const & x )
{ {
if( exception_detail::error_info_container * c=x.data_.get() ) if( exception_detail::error_info_container * c=x.data_.get() )
if( shared_ptr<exception_detail::error_info_base const> eib = c->get(BOOST_EXCEPTION_STATIC_TYPEID(ErrorInfo)) ) if( shared_ptr<exception_detail::error_info_base> eib = c->get(BOOST_EXCEPTION_STATIC_TYPEID(ErrorInfo)) )
{ {
#ifndef BOOST_NO_RTTI #ifndef BOOST_NO_RTTI
BOOST_ASSERT( 0!=dynamic_cast<ErrorInfo const *>(eib.get()) ); BOOST_ASSERT( 0!=dynamic_cast<ErrorInfo *>(eib.get()) );
#endif #endif
ErrorInfo const * w = static_cast<ErrorInfo const *>(eib.get()); ErrorInfo * w = static_cast<ErrorInfo *>(eib.get());
return &w->value(); return &w->value();
} }
return 0; return 0;
@ -43,7 +43,7 @@ boost
get_info<throw_function> get_info<throw_function>
{ {
static static
char const * const * char const * *
get( exception const & x ) get( exception const & x )
{ {
return x.throw_function_ ? &x.throw_function_ : 0; return x.throw_function_ ? &x.throw_function_ : 0;
@ -55,7 +55,7 @@ boost
get_info<throw_file> get_info<throw_file>
{ {
static static
char const * const * char const * *
get( exception const & x ) get( exception const & x )
{ {
return x.throw_file_ ? &x.throw_file_ : 0; return x.throw_file_ ? &x.throw_file_ : 0;
@ -67,12 +67,26 @@ boost
get_info<throw_line> get_info<throw_line>
{ {
static static
int const * int *
get( exception const & x ) get( exception const & x )
{ {
return x.throw_line_!=-1 ? &x.throw_line_ : 0; return x.throw_line_!=-1 ? &x.throw_line_ : 0;
} }
}; };
template <class T,class R>
struct
get_error_info_return_type
{
typedef R * type;
};
template <class T,class R>
struct
get_error_info_return_type<T const,R>
{
typedef R const * type;
};
} }
#ifdef BOOST_NO_RTTI #ifdef BOOST_NO_RTTI
@ -83,11 +97,18 @@ boost
{ {
return exception_detail::get_info<ErrorInfo>::get(x); return exception_detail::get_info<ErrorInfo>::get(x);
} }
template <class ErrorInfo>
inline
typename ErrorInfo::value_type *
get_error_info( boost::exception & x )
{
return exception_detail::get_info<ErrorInfo>::get(x);
}
#else #else
template <class ErrorInfo,class E> template <class ErrorInfo,class E>
inline inline
typename ErrorInfo::value_type const * typename exception_detail::get_error_info_return_type<E,typename ErrorInfo::value_type>::type
get_error_info( E const & some_exception ) get_error_info( E & some_exception )
{ {
if( exception const * x = dynamic_cast<exception const *>(&some_exception) ) if( exception const * x = dynamic_cast<exception const *>(&some_exception) )
return exception_detail::get_info<ErrorInfo>::get(*x); return exception_detail::get_info<ErrorInfo>::get(*x);

View File

@ -75,34 +75,36 @@ boost
} }
void void
set( shared_ptr<error_info_base const> const & x, type_info_ const & typeid_ ) set( shared_ptr<error_info_base> const & x, type_info_ const & typeid_ )
{ {
BOOST_ASSERT(x); BOOST_ASSERT(x);
info_[typeid_] = x; info_[typeid_] = x;
diagnostic_info_str_.clear(); diagnostic_info_str_.clear();
} }
shared_ptr<error_info_base const> shared_ptr<error_info_base>
get( type_info_ const & ti ) const get( type_info_ const & ti ) const
{ {
error_info_map::const_iterator i=info_.find(ti); error_info_map::const_iterator i=info_.find(ti);
if( info_.end()!=i ) if( info_.end()!=i )
{ {
shared_ptr<error_info_base const> const & p = i->second; shared_ptr<error_info_base> const & p = i->second;
#ifndef BOOST_NO_RTTI #ifndef BOOST_NO_RTTI
BOOST_ASSERT( BOOST_EXCEPTION_DYNAMIC_TYPEID(*p)==ti ); BOOST_ASSERT( BOOST_EXCEPTION_DYNAMIC_TYPEID(*p)==ti );
#endif #endif
return p; return p;
} }
return shared_ptr<error_info_base const>(); return shared_ptr<error_info_base>();
} }
char const * char const *
diagnostic_information() const diagnostic_information( char const * header ) const
{ {
if( diagnostic_info_str_.empty() ) if( header )
{ {
BOOST_ASSERT(*header!=0);
std::ostringstream tmp; std::ostringstream tmp;
tmp << header;
for( error_info_map::const_iterator i=info_.begin(),end=info_.end(); i!=end; ++i ) for( error_info_map::const_iterator i=info_.begin(),end=info_.end(); i!=end; ++i )
{ {
shared_ptr<error_info_base const> const & x = i->second; shared_ptr<error_info_base const> const & x = i->second;
@ -117,7 +119,7 @@ boost
friend class boost::exception; friend class boost::exception;
typedef std::map< type_info_, shared_ptr<error_info_base const> > error_info_map; typedef std::map< type_info_, shared_ptr<error_info_base> > error_info_map;
error_info_map info_; error_info_map info_;
mutable std::string diagnostic_info_str_; mutable std::string diagnostic_info_str_;
mutable int count_; mutable int count_;

View File

@ -41,12 +41,17 @@
#include <sstream> #include <sstream>
#endif #endif
#if defined(BOOST_NO_STRINGSTREAM) || \ #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
defined(BOOST_NO_STD_WSTRING) || \
defined(BOOST_NO_STD_LOCALE)
#define BOOST_LCAST_NO_WCHAR_T #define BOOST_LCAST_NO_WCHAR_T
#endif #endif
#ifdef BOOST_NO_TYPEID
#define BOOST_LCAST_THROW_BAD_CAST(S, T) throw_exception(bad_lexical_cast())
#else
#define BOOST_LCAST_THROW_BAD_CAST(Source, Target) \
throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)))
#endif
namespace boost namespace boost
{ {
// exception used to indicate runtime lexical_cast failure // exception used to indicate runtime lexical_cast failure
@ -577,7 +582,7 @@ namespace boost
lexical_stream(char_type* = 0, char_type* = 0) lexical_stream(char_type* = 0, char_type* = 0)
{ {
stream.unsetf(std::ios::skipws); stream.unsetf(std::ios::skipws);
lcast_set_precision(stream, (Source*)0, (Target*)0); lcast_set_precision(stream, static_cast<Source*>(0), static_cast<Target*>(0) );
} }
~lexical_stream() ~lexical_stream()
{ {
@ -694,7 +699,7 @@ namespace boost
{ {
this->setp(start, finish); this->setp(start, finish);
std::basic_ostream<CharT> stream(static_cast<Base*>(this)); std::basic_ostream<CharT> stream(static_cast<Base*>(this));
lcast_set_precision(stream, (OutputStreamable*)0); lcast_set_precision(stream, static_cast<OutputStreamable*>(0));
bool const result = !(stream << input).fail(); bool const result = !(stream << input).fail();
finish = this->pptr(); finish = this->pptr();
return result; return result;
@ -764,7 +769,7 @@ namespace boost
this->setg(start, start, finish); this->setg(start, start, finish);
std::basic_istream<CharT> stream(static_cast<Base*>(this)); std::basic_istream<CharT> stream(static_cast<Base*>(this));
stream.unsetf(std::ios::skipws); stream.unsetf(std::ios::skipws);
lcast_set_precision(stream, (InputStreamable*)0); lcast_set_precision(stream, static_cast<InputStreamable*>(0));
#if (defined _MSC_VER) #if (defined _MSC_VER)
# pragma warning( pop ) # pragma warning( pop )
#endif #endif
@ -1111,6 +1116,12 @@ namespace boost
typedef const T * type; typedef const T * type;
}; };
#if (defined _MSC_VER)
# pragma warning( push )
# pragma warning( disable : 4701 ) // possible use of ... before initialization
# pragma warning( disable : 4702 ) // unreachable code
#endif
template< typename Target template< typename Target
, typename Source , typename Source
, bool Unlimited // string representation of Source is unlimited , bool Unlimited // string representation of Source is unlimited
@ -1136,28 +1147,14 @@ namespace boost
, detail::lexical_stream_limited_src<CharT,base,traits> , detail::lexical_stream_limited_src<CharT,base,traits>
>::type interpreter(buf, buf + src_len); >::type interpreter(buf, buf + src_len);
// The original form, reproduced below, is more elegant Target result;
// but yields a spurious C4701 warning ("possible use of if(!(interpreter << arg && interpreter >> result))
// "result" before initialization") with VC7.1 (/W4). BOOST_LCAST_THROW_BAD_CAST(Source, Target);
// return result;
// Target result;
//
// if(!(interpreter << arg && interpreter >> result))
// throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
// return result;
if(interpreter << arg) {
Target result;
if (interpreter >> result)
return result;
}
#ifndef BOOST_NO_TYPEID
throw_exception(bad_lexical_cast(typeid(Source), typeid(Target)));
#else
throw_exception(bad_lexical_cast());
#endif
return Target(); // normally never reached (throw_exception)
} }
#if (defined _MSC_VER)
# pragma warning( pop )
#endif
} }
template<typename Target, typename Source> template<typename Target, typename Source>

View File

@ -2008,7 +2008,7 @@ insert_recursion:
v = static_cast<int>(hash_value_from_capture_name(base, m_position)); v = static_cast<int>(hash_value_from_capture_name(base, m_position));
re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_assert_backref, sizeof(re_brace))); re_brace* br = static_cast<re_brace*>(this->append_state(syntax_element_assert_backref, sizeof(re_brace)));
br->index = v; br->index = v;
if((*m_position != charT('>')) && (*m_position != charT('\'')) || (++m_position == m_end)) if(((*m_position != charT('>')) && (*m_position != charT('\''))) || (++m_position == m_end))
{ {
fail(regex_constants::error_badrepeat, m_position - m_base); fail(regex_constants::error_badrepeat, m_position - m_base);
return false; return false;

View File

@ -127,7 +127,7 @@ public:
|| slot_ == other.slot_)); || slot_ == other.slot_));
} }
#if BOOST_WORKAROUND(_MSC_VER, <= 1500) #if BOOST_WORKAROUND(_MSC_VER, <= 1600)
void decrement(); void decrement();
void advance(difference_type); void advance(difference_type);
#endif #endif

View File

@ -56,7 +56,7 @@ inline void throw_exception_assert_compatibility( std::exception const & ) { }
template<class E> BOOST_ATTRIBUTE_NORETURN inline void throw_exception( E const & e ) template<class E> BOOST_ATTRIBUTE_NORETURN inline void throw_exception( E const & e )
{ {
//All boost exceptions are required to derive std::exception, //All boost exceptions are required to derive from std::exception,
//to ensure compatibility with BOOST_NO_EXCEPTIONS. //to ensure compatibility with BOOST_NO_EXCEPTIONS.
throw_exception_assert_compatibility(e); throw_exception_assert_compatibility(e);

View File

@ -85,7 +85,7 @@ namespace detail {
BOOST_STATIC_CONSTANT(unsigned, s1 = sizeof(has_new_operator_impl<T>::template check_sig<T>(0))); BOOST_STATIC_CONSTANT(unsigned, s1 = sizeof(has_new_operator_impl<T>::template check_sig<T>(0)));
BOOST_STATIC_CONSTANT(unsigned, s2 = sizeof(has_new_operator_impl<T>::template check_sig2<T>(0))); BOOST_STATIC_CONSTANT(unsigned, s2 = sizeof(has_new_operator_impl<T>::template check_sig2<T>(0)));
#else #else
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:6334) #pragma warning(disable:6334)
#endif #endif
@ -93,7 +93,7 @@ namespace detail {
BOOST_STATIC_CONSTANT(unsigned, s1 = sizeof(check_sig<T>(0))); BOOST_STATIC_CONSTANT(unsigned, s1 = sizeof(check_sig<T>(0)));
BOOST_STATIC_CONSTANT(unsigned, s2 = sizeof(check_sig2<T>(0))); BOOST_STATIC_CONSTANT(unsigned, s2 = sizeof(check_sig2<T>(0)));
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(pop) #pragma warning(pop)
#endif #endif
#endif #endif

View File

@ -82,7 +82,7 @@
# define BOOST_HAS_TYPE_TRAITS_INTRINSICS # define BOOST_HAS_TYPE_TRAITS_INTRINSICS
#endif #endif
#if defined(BOOST_MSVC) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >=140050215) #if defined(BOOST_MSVC) && defined(BOOST_MSVC_FULL_VER) && (BOOST_MSVC_FULL_VER >=140050215)
# include <boost/type_traits/is_same.hpp> # include <boost/type_traits/is_same.hpp>
# define BOOST_IS_UNION(T) __is_union(T) # define BOOST_IS_UNION(T) __is_union(T)

View File

@ -94,12 +94,12 @@ struct is_abstract_imp2
#ifdef __GNUC__ #ifdef __GNUC__
BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(is_abstract_imp2<T>::template check_sig<T>(0))); BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(is_abstract_imp2<T>::template check_sig<T>(0)));
#else #else
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:6334) #pragma warning(disable:6334)
#endif #endif
BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(check_sig<T>(0))); BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(check_sig<T>(0)));
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(pop) #pragma warning(pop)
#endif #endif
#endif #endif

View File

@ -15,10 +15,10 @@
#include <boost/type_traits/is_same.hpp> #include <boost/type_traits/is_same.hpp>
#include <boost/type_traits/is_convertible.hpp> #include <boost/type_traits/is_convertible.hpp>
#include <boost/type_traits/detail/ice_and.hpp> #include <boost/type_traits/detail/ice_and.hpp>
#include <boost/type_traits/remove_cv.hpp>
#include <boost/config.hpp> #include <boost/config.hpp>
#include <boost/static_assert.hpp> #include <boost/static_assert.hpp>
#endif #endif
#include <boost/type_traits/remove_cv.hpp>
// should be the last #include // should be the last #include
#include <boost/type_traits/detail/bool_trait_def.hpp> #include <boost/type_traits/detail/bool_trait_def.hpp>
@ -133,7 +133,7 @@ struct bd_helper
template<typename B, typename D> template<typename B, typename D>
struct is_base_and_derived_impl2 struct is_base_and_derived_impl2
{ {
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:6334) #pragma warning(disable:6334)
#endif #endif
@ -156,7 +156,7 @@ struct is_base_and_derived_impl2
BOOST_STATIC_CONSTANT(bool, value = BOOST_STATIC_CONSTANT(bool, value =
sizeof(bd_helper<B,D>::check_sig(Host(), 0)) == sizeof(type_traits::yes_type)); sizeof(bd_helper<B,D>::check_sig(Host(), 0)) == sizeof(type_traits::yes_type));
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(pop) #pragma warning(pop)
#endif #endif
}; };
@ -212,7 +212,7 @@ struct is_base_and_derived_impl
typedef is_base_and_derived_select< typedef is_base_and_derived_select<
::boost::is_class<B>::value, ::boost::is_class<B>::value,
::boost::is_class<D>::value, ::boost::is_class<D>::value,
::boost::is_same<B,D>::value> selector; ::boost::is_same<ncvB,ncvD>::value> selector;
typedef typename selector::template rebind<ncvB,ncvD> binder; typedef typename selector::template rebind<ncvB,ncvD> binder;
typedef typename binder::type bound_type; typedef typename binder::type bound_type;
@ -222,7 +222,10 @@ struct is_base_and_derived_impl
template <typename B, typename D> template <typename B, typename D>
struct is_base_and_derived_impl struct is_base_and_derived_impl
{ {
BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_BASE_OF(B,D)); typedef typename remove_cv<B>::type ncvB;
typedef typename remove_cv<D>::type ncvD;
BOOST_STATIC_CONSTANT(bool, value = (BOOST_IS_BASE_OF(B,D) && ! ::boost::is_same<ncvB,ncvD>::value));
}; };
#endif #endif
} // namespace detail } // namespace detail

View File

@ -11,21 +11,32 @@
#include <boost/type_traits/is_base_and_derived.hpp> #include <boost/type_traits/is_base_and_derived.hpp>
#include <boost/type_traits/is_same.hpp> #include <boost/type_traits/is_same.hpp>
#include <boost/type_traits/is_class.hpp>
#include <boost/type_traits/detail/ice_or.hpp> #include <boost/type_traits/detail/ice_or.hpp>
#include <boost/type_traits/detail/ice_and.hpp>
// should be the last #include // should be the last #include
#include <boost/type_traits/detail/bool_trait_def.hpp> #include <boost/type_traits/detail/bool_trait_def.hpp>
namespace boost { namespace boost {
namespace detail{
template <class B, class D>
struct is_base_of_imp
{
typedef typename remove_cv<B>::type ncvB;
typedef typename remove_cv<D>::type ncvD;
BOOST_STATIC_CONSTANT(bool, value = (::boost::type_traits::ice_or<
(::boost::detail::is_base_and_derived_impl<ncvB,ncvD>::value),
(::boost::type_traits::ice_and< ::boost::is_same<ncvB,ncvD>::value, ::boost::is_class<ncvB>::value>::value)>::value));
};
}
BOOST_TT_AUX_BOOL_TRAIT_DEF2( BOOST_TT_AUX_BOOL_TRAIT_DEF2(
is_base_of is_base_of
, Base , Base
, Derived , Derived
, (::boost::type_traits::ice_or< , (::boost::detail::is_base_of_imp<Base, Derived>::value))
(::boost::detail::is_base_and_derived_impl<Base,Derived>::value),
(::boost::is_same<Base,Derived>::value)>::value)
)
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_of,Base&,Derived,false) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_2(typename Base,typename Derived,is_base_of,Base&,Derived,false)

View File

@ -256,7 +256,7 @@ struct is_convertible_basic_impl
#ifdef BOOST_MSVC #ifdef BOOST_MSVC
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4244) #pragma warning(disable:4244)
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(disable:6334) #pragma warning(disable:6334)
#endif #endif
#endif #endif

View File

@ -65,7 +65,7 @@ struct is_function_impl
template <typename T> template <typename T>
struct is_function_impl struct is_function_impl
{ {
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:6334) #pragma warning(disable:6334)
#endif #endif
@ -74,7 +74,7 @@ struct is_function_impl
bool, value = sizeof(::boost::type_traits::is_function_ptr_tester(t)) bool, value = sizeof(::boost::type_traits::is_function_ptr_tester(t))
== sizeof(::boost::type_traits::yes_type) == sizeof(::boost::type_traits::yes_type)
); );
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(pop) #pragma warning(pop)
#endif #endif
}; };

View File

@ -64,7 +64,7 @@ struct is_mem_fun_pointer_select<false>
{ {
template <typename T> struct result_ template <typename T> struct result_
{ {
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:6334) #pragma warning(disable:6334)
#endif #endif
@ -75,7 +75,7 @@ struct is_mem_fun_pointer_select<false>
bool, value = ( bool, value = (
1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(self_type::make_t)) 1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(self_type::make_t))
)); ));
#if BOOST_WORKAROUND(_MSC_FULL_VER, >= 140050000) #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
#pragma warning(pop) #pragma warning(pop)
#endif #endif
}; };

View File

@ -50,7 +50,7 @@ BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,
BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,::boost::is_member_function_pointer<T>::value) BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_member_pointer,T,::boost::is_member_function_pointer<T>::value)
BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*,true)
#if !BOOST_WORKAROUND(__MWERKS__,<=0x3003) #if !BOOST_WORKAROUND(__MWERKS__,<=0x3003) && !BOOST_WORKAROUND(__IBMCPP__, <=600)
BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const,true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const,true)
BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*volatile,true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*volatile,true)
BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const volatile,true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,typename U,is_member_pointer,U T::*const volatile,true)

View File

@ -30,7 +30,7 @@ template <class T>
struct is_signed_helper struct is_signed_helper
{ {
typedef typename remove_cv<T>::type no_cv_t; typedef typename remove_cv<T>::type no_cv_t;
BOOST_STATIC_CONSTANT(bool, value = (static_cast<no_cv_t>(-1) < 0)); BOOST_STATIC_CONSTANT(bool, value = (!(static_cast<no_cv_t>(-1) > 0)));
}; };
template <bool integral_type> template <bool integral_type>

View File

@ -42,14 +42,14 @@ struct is_virtual_base_of_impl<Base, Derived, mpl::true_>
X(); X();
X(const X&); X(const X&);
X& operator=(const X&); X& operator=(const X&);
~X(); ~X()throw();
}; };
struct Y : public virtual Derived struct Y : public virtual Derived
{ {
Y(); Y();
Y(const Y&); Y(const Y&);
Y& operator=(const Y&); Y& operator=(const Y&);
~Y(); ~Y()throw();
}; };
#else #else
struct X : Derived, virtual Base struct X : Derived, virtual Base
@ -57,14 +57,14 @@ struct is_virtual_base_of_impl<Base, Derived, mpl::true_>
X(); X();
X(const X&); X(const X&);
X& operator=(const X&); X& operator=(const X&);
~X(); ~X()throw();
}; };
struct Y : Derived struct Y : Derived
{ {
Y(); Y();
Y(const Y&); Y(const Y&);
Y& operator=(const Y&); Y& operator=(const Y&);
~Y(); ~Y()throw();
}; };
#endif #endif
BOOST_STATIC_CONSTANT(bool, value = (sizeof(X)==sizeof(Y))); BOOST_STATIC_CONSTANT(bool, value = (sizeof(X)==sizeof(Y)));

View File

@ -8,6 +8,7 @@
// 24 Dec 2007 (Refactored and worked around various compiler bugs) Fernando Cacciola, Niels Dekker // 24 Dec 2007 (Refactored and worked around various compiler bugs) Fernando Cacciola, Niels Dekker
// 23 May 2008 (Fixed operator= const issue, added initialized_value) Niels Dekker, Fernando Cacciola // 23 May 2008 (Fixed operator= const issue, added initialized_value) Niels Dekker, Fernando Cacciola
// 21 Ago 2008 (Added swap) Niels Dekker, Fernando Cacciola // 21 Ago 2008 (Added swap) Niels Dekker, Fernando Cacciola
// 20 Feb 2009 (Fixed logical const-ness issues) Niels Dekker, Fernando Cacciola
// //
#ifndef BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP #ifndef BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP
#define BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP #define BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP
@ -90,7 +91,12 @@ class value_initialized
wrapper_address()->wrapper::~wrapper(); wrapper_address()->wrapper::~wrapper();
} }
T& data() const T const & data() const
{
return wrapper_address()->data;
}
T& data()
{ {
return wrapper_address()->data; return wrapper_address()->data;
} }
@ -100,12 +106,16 @@ class value_initialized
::boost::swap( this->data(), arg.data() ); ::boost::swap( this->data(), arg.data() );
} }
operator T&() const { return this->data(); } operator T const &() const { return this->data(); }
operator T&() { return this->data(); }
} ; } ;
template<class T> template<class T>
T const& get ( value_initialized<T> const& x ) T const& get ( value_initialized<T> const& x )
{ {

View File

@ -19,7 +19,7 @@
// BOOST_VERSION / 100 % 1000 is the minor version // BOOST_VERSION / 100 % 1000 is the minor version
// BOOST_VERSION / 100000 is the major version // BOOST_VERSION / 100000 is the major version
#define BOOST_VERSION 104000 #define BOOST_VERSION 104100
// //
// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
@ -27,7 +27,7 @@
// number, y is the minor version number, and z is the patch level if not 0. // number, y is the minor version number, and z is the patch level if not 0.
// This is used by <config/auto_link.hpp> to select which library version to link to. // This is used by <config/auto_link.hpp> to select which library version to link to.
#define BOOST_LIB_VERSION "1_40" #define BOOST_LIB_VERSION "1_41"
#endif #endif

View File

@ -24,7 +24,7 @@ typedef slot_container_type::iterator group_iterator;
typedef slot_container_type::const_iterator const_group_iterator; typedef slot_container_type::const_iterator const_group_iterator;
#if BOOST_WORKAROUND(_MSC_VER, <= 1500) #if BOOST_WORKAROUND(_MSC_VER, <= 1600)
void named_slot_map_iterator::decrement() { assert(false); } void named_slot_map_iterator::decrement() { assert(false); }
void named_slot_map_iterator::advance(difference_type) { assert(false); } void named_slot_map_iterator::advance(difference_type) { assert(false); }
#endif #endif