Index: boost/type_traits/config.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/type_traits/config.hpp,v retrieving revision 1.11 diff -u -r1.11 config.hpp --- boost/type_traits/config.hpp 6 Jan 2004 13:37:02 -0000 1.11 +++ boost/type_traits/config.hpp 17 Aug 2004 19:13:36 -0000 @@ -24,7 +24,7 @@ # define BOOST_TT_DECL /**/ #endif -# if (defined(__MWERKS__) && __MWERKS__ >= 0x3000) || (defined(BOOST_MSVC) && (BOOST_MSVC > 1301)) || defined(__EDG_VERSION__) || (defined(__GNUC__) && (__GNUC__ >= 3)) || defined(BOOST_NO_COMPILER_CONFIG) +# if (defined(__MWERKS__) && __MWERKS__ >= 0x3000) || (defined(BOOST_MSVC) && (BOOST_MSVC > 1301)) || defined(__EDG_VERSION__) || (defined(__GNUC__) && (__GNUC__ >= 3)) || defined(__DMC__) || defined(BOOST_NO_COMPILER_CONFIG) # define BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION #endif Index: boost/type_traits/is_array.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/type_traits/is_array.hpp,v retrieving revision 1.7 diff -u -r1.7 is_array.hpp --- boost/type_traits/is_array.hpp 18 Feb 2004 17:45:53 -0000 1.7 +++ boost/type_traits/is_array.hpp 17 Aug 2004 19:13:36 -0000 @@ -36,7 +36,7 @@ BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const[N],true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T volatile[N],true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,is_array,T const volatile[N],true) -#if !(defined(__BORLANDC__) && (__BORLANDC__ < 0x600)) && !defined(__IBMCPP__) +#if !(defined(__BORLANDC__) && (__BORLANDC__ < 0x600)) && !defined(__IBMCPP__) && !defined(__DMC__) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T[],true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T const[],true) BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC1_1(typename T,is_array,T volatile[],true) Index: boost/type_traits/is_base_and_derived.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/type_traits/is_base_and_derived.hpp,v retrieving revision 1.13 diff -u -r1.13 is_base_and_derived.hpp --- boost/type_traits/is_base_and_derived.hpp 22 May 2004 10:36:05 -0000 1.13 +++ boost/type_traits/is_base_and_derived.hpp 17 Aug 2004 19:13:36 -0000 @@ -25,7 +25,8 @@ #if !BOOST_WORKAROUND(__BORLANDC__, <= 0x570) \ && !BOOST_WORKAROUND(__SUNPRO_CC , BOOST_TESTED_AT(0x540)) \ - && !BOOST_WORKAROUND(__EDG_VERSION__, <= 243) + && !BOOST_WORKAROUND(__EDG_VERSION__, <= 243) \ + && !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) // The EDG version number is a lower estimate. // It is not currently known which EDG version // exactly fixes the problem. Index: boost/type_traits/is_convertible.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/type_traits/is_convertible.hpp,v retrieving revision 1.25 diff -u -r1.25 is_convertible.hpp --- boost/type_traits/is_convertible.hpp 6 Jan 2004 13:37:10 -0000 1.25 +++ boost/type_traits/is_convertible.hpp 17 Aug 2004 19:57:36 -0000 @@ -156,6 +156,32 @@ ); }; +#elif defined(__DMC__) + +struct any_conversion +{ + template any_conversion(const volatile T&); + // we need this constructor to catch references to functions + // (which can not be cv-qualified): + template any_conversion(T&); +}; + +template +struct is_convertible_basic_impl +{ + // Using '...' doesn't always work on Digital Mars. This version seems to. + template + static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion, float, T); + static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int, int); + static From _m_from; + + // Static constants sometime cause the conversion of _m_from to To to be + // called. This doesn't happen with an enum. + enum { value = + sizeof( _m_check(_m_from, 0, 0) ) == sizeof(::boost::type_traits::yes_type) + }; +}; + #else // @@ -176,7 +202,21 @@ #endif // is_convertible_impl -#if !defined(__BORLANDC__) || __BORLANDC__ > 0x551 +#if defined(__DMC__) +// As before, a static constant sometimes causes errors on Digital Mars. +template +struct is_convertible_impl +{ + typedef typename add_reference::type ref_type; + enum { value = + ::boost::type_traits::ice_and< + ::boost::detail::is_convertible_basic_impl::value, + ::boost::type_traits::ice_not< + ::boost::is_array::value + >::value, + >::value }; +}; +#elif !defined(__BORLANDC__) || __BORLANDC__ > 0x551 template struct is_convertible_impl { Index: boost/type_traits/remove_bounds.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/type_traits/remove_bounds.hpp,v retrieving revision 1.6 diff -u -r1.6 remove_bounds.hpp --- boost/type_traits/remove_bounds.hpp 18 Feb 2004 17:45:53 -0000 1.6 +++ boost/type_traits/remove_bounds.hpp 17 Aug 2004 19:13:36 -0000 @@ -24,7 +24,7 @@ BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const[N],T const type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T volatile[N],T volatile type) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_2(typename T,std::size_t N,remove_bounds,T const volatile[N],T const volatile type) -#if !(defined(__BORLANDC__) && (__BORLANDC__ < 0x600)) && !defined(__IBMCPP__) +#if !(defined(__BORLANDC__) && (__BORLANDC__ < 0x600)) && !defined(__IBMCPP__) && !defined(__DMC__) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T[],T) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T const[],T const) BOOST_TT_AUX_TYPE_TRAIT_PARTIAL_SPEC1_1(typename T,remove_bounds,T volatile[],T volatile)