
The string algo library is currently failing with Borland's compiler because it uses code like: template< typename T > class has_native_replace { #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION private: static T* t; public: BOOST_STATIC_CONSTANT(bool, value=( sizeof(has_native_replace_tester(t))==sizeof(yes_type) ) ); #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION public: # if BOOST_WORKAROUND( __IBMCPP__, <= 600 ) enum { value = false }; # else BOOST_STATIC_CONSTANT(bool, value=false); # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION typedef mpl::bool_<value> type; //error here }; Rather than adding yet another workaround, I think this can all be simplified by just using: #ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION template< typename T > class has_native_replace { private: static T* t; public: BOOST_STATIC_CONSTANT(bool, value=( sizeof(has_native_replace_tester(t))==sizeof(yes_type) ) ); typedef mpl::bool_<value> type; }; #else template< typename T > class has_native_replace : public mpl::bool_<false> { }; #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION and similar for the other traits classes. John.