
This goes a small way to getting string_algo to work with bcc32. The current errors I'm getting are in detail/find_format.hpp. If anyone can suggest a solution, I'd be happy to try it out. Thanks Russell regex_test.cpp: Error E2093 c:\Users\russell\Projects\boost-cvs\boost\boost/algorithm/string/detail/find_format.hpp 133: 'operator!' not implemented in type 'find_format_store<const char *,regex_formatF<string>,string>' for arguments of the same type in function string find_format_copy_impl2<string,find_regexF<regex>,regex_formatF<string>,regex_search_result<const char *>,string>(const string &,find_regexF<regex>,regex_formatF<string>,const regex_search_result<const char *> &,const string &) Error E2093 c:\Users\russell\Projects\boost-cvs\boost\boost/algorithm/string/detail/find_format.hpp 133: 'operator!' not implemented in type 'find_format_store<const char *,empty_formatF<char>,empty_container<char> >' for arguments of the same type in function string find_format_copy_impl2<string,find_regexF<regex>,empty_formatF<char>,regex_search_result<const char *>,empty_container<char> >(const string &,find_regexF<regex>,empty_formatF<char>,const regex_search_result<const char *> &,const empty_container<char> &) Error E2093 c:\Users\russell\Projects\boost-cvs\boost\boost/algorithm/string/detail/find_format.hpp 72: 'operator!' not implemented in type 'find_format_store<const char *,regex_formatF<string>,string>' for arguments of the same type in function back_insert_iterator<string> find_format_copy_impl2<back_insert_iterator<string>,string,find_regexF<regex>,regex_formatF<string>,regex_search_result<const char *>,string>(back_insert_iterator<string>,const string &,find_regexF<regex>,regex_formatF<string>,const regex_search_result<const char *> &,const string &) Error E2093 c:\Users\russell\Projects\boost-cvs\boost\boost/algorithm/string/detail/find_format.hpp 72: 'operator!' not implemented in type 'find_format_store<const char *,empty_formatF<char>,empty_container<char> >' for arguments of the same type in function back_insert_iterator<string> find_format_copy_impl2<back_insert_iterator<string>,string,find_regexF<regex>,empty_formatF<char>,regex_search_result<const char *>,empty_container<char> >(back_insert_iterator<string>,const string &,find_regexF<regex>,empty_formatF<char>,const regex_search_result<const char *> &,const empty_container<char> &) Error E2093 c:\Users\russell\Projects\boost-cvs\boost\boost/algorithm/string/detail/find_format.hpp 193: 'operator!' not implemented in type 'find_format_store<char *,regex_formatF<string>,string>' for arguments of the same type in function void find_format_impl2<string,find_regexF<regex>,regex_formatF<string>,regex_search_result<char *>,string>(string &,find_regexF<regex>,regex_formatF<string>,const regex_search_result<char *> &,const string &) Error E2228 c:\Users\russell\Projects\boost-cvs\boost\boost/algorithm/string/detail/find_format.hpp 193: Too many error or warning messages in function void find_format_impl2<string,find_regexF<regex>,regex_formatF<string>,regex_search_result<char *>,string>(string &,find_regexF<regex>,regex_formatF<string>,const regex_search_result<char *> &,const string &) Index: boost/algorithm/string/config.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/algorithm/string/config.hpp,v retrieving revision 1.4 diff -u -r1.4 config.hpp --- boost/algorithm/string/config.hpp 16 Jul 2004 13:57:40 -0000 1.4 +++ boost/algorithm/string/config.hpp 10 May 2005 13:08:30 -0000 @@ -17,11 +17,7 @@ # error "macro already defined!" #endif -#ifdef __BORLANDC__ -#define BOOST_STRING_TYPENAME -#else #define BOOST_STRING_TYPENAME BOOST_DEDUCED_TYPENAME -#endif // Metrowerks workaround #if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) // 8.x Index: boost/algorithm/string/formatter.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/algorithm/string/formatter.hpp,v retrieving revision 1.5 diff -u -r1.5 formatter.hpp --- boost/algorithm/string/formatter.hpp 12 Apr 2005 16:50:41 -0000 1.5 +++ boost/algorithm/string/formatter.hpp 10 May 2005 13:06:23 -0000 @@ -23,7 +23,7 @@ for a specific Formatter. An example of such a cooperation is regex_finder and regex_formatter. - Formatters are used as pluggable components for replace facilities. + Formatters are used as pluggable components for replace facilities. This header contains generator functions for the Formatters provided in this library. */ @@ -64,15 +64,19 @@ //! Empty formatter /*! Construct the \c empty_formatter. Empty formatter always returns an empty - sequence. + sequence. \param Input container used to select a correct value_type for the resulting empty_container<>. \return An instance of the \c empty_formatter object. */ template<typename RangeT> - inline detail::empty_formatF< + inline detail::empty_formatF< +// #ifdef __BORLANDC__ +// typename range_value<RangeT>::type> +// #else BOOST_STRING_TYPENAME range_value<RangeT>::type> +// #endif empty_formatter(const RangeT&) { return detail::empty_formatF< Index: boost/algorithm/string/sequence_traits.hpp =================================================================== RCS file: /cvsroot/boost/boost/boost/algorithm/string/sequence_traits.hpp,v retrieving revision 1.7 diff -u -r1.7 sequence_traits.hpp --- boost/algorithm/string/sequence_traits.hpp 15 Jul 2004 21:48:25 -0000 1.7 +++ boost/algorithm/string/sequence_traits.hpp 10 May 2005 12:56:13 -0000 @@ -24,7 +24,7 @@ Due to a language restriction, it is not currently possible to define specializations for stl containers without including the corresponding header. To decrease the overhead - needed by this inclusion, user can selectively include a specialization + needed by this inclusion, user can selectively include a specialization header for a specific container. They are located in boost/algorithm/string/stl directory. Alternatively she can include boost/algorithm/string/std_collection_traits.hpp header which contains specializations for all stl containers. @@ -39,7 +39,7 @@ //! Native replace tester /*! - Declare an override of this tester function with return + Declare an override of this tester function with return type boost::string_algo::yes_type for a sequence with this property. \return yes_type if the container has basic_string like native replace @@ -49,31 +49,31 @@ //! Stable iterators tester /*! - Declare an override of this tester function with return + Declare an override of this tester function with return type boost::string_algo::yes_type for a sequence with this property. \return yes_type if the sequence's insert/replace/erase methods do not invalidate existing iterators. */ - no_type has_stable_iterators_tester(...); + no_type has_stable_iterators_tester(...); //! const time insert tester /*! - Declare an override of this tester function with return + Declare an override of this tester function with return type boost::string_algo::yes_type for a sequence with this property. \return yes_type if the sequence's insert method is working in constant time */ - no_type has_const_time_insert_tester(...); + no_type has_const_time_insert_tester(...); //! const time erase tester /*! - Declare an override of this tester function with return + Declare an override of this tester function with return type boost::string_algo::yes_type for a sequence with this property. \return yes_type if the sequence's erase method is working in constant time */ - no_type has_const_time_erase_tester(...); + no_type has_const_time_erase_tester(...); #endif //BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION @@ -89,7 +89,7 @@ private: static T* t; public: - BOOST_STATIC_CONSTANT(bool, value=( + BOOST_STATIC_CONSTANT(bool, value=( sizeof(has_native_replace_tester(t))==sizeof(yes_type) ) ); #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION public: @@ -99,9 +99,9 @@ BOOST_STATIC_CONSTANT(bool, value=false); # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - - typedef mpl::bool_<value> type; + + typedef mpl::bool_<has_native_replace<T>::value> type; }; @@ -117,7 +117,7 @@ private: static T* t; public: - BOOST_STATIC_CONSTANT(bool, value=( + BOOST_STATIC_CONSTANT(bool, value=( sizeof(has_stable_iterators_tester(t))==sizeof(yes_type) ) ); #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION public: @@ -128,13 +128,13 @@ # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - typedef mpl::bool_<value> type; + typedef mpl::bool_<has_stable_iterators<T>::value> type; }; //! Const time insert trait /*! - This trait specifies that the sequence's insert method has + This trait specifies that the sequence's insert method has constant time complexity. */ template< typename T > @@ -144,7 +144,7 @@ private: static T* t; public: - BOOST_STATIC_CONSTANT(bool, value=( + BOOST_STATIC_CONSTANT(bool, value=( sizeof(has_const_time_insert_tester(t))==sizeof(yes_type) ) ); #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION public: @@ -155,13 +155,13 @@ # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - typedef mpl::bool_<value> type; + typedef mpl::bool_<has_const_time_insert<T>::value> type; }; //! Const time erase trait /*! - This trait specifies that the sequence's erase method has + This trait specifies that the sequence's erase method has constant time complexity. */ template< typename T > @@ -171,7 +171,7 @@ private: static T* t; public: - BOOST_STATIC_CONSTANT(bool, value=( + BOOST_STATIC_CONSTANT(bool, value=( sizeof(has_const_time_erase_tester(t))==sizeof(yes_type) ) ); #else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION public: @@ -182,7 +182,7 @@ # endif // BOOST_WORKAROUND( __IBMCPP__, <= 600 ) #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - typedef mpl::bool_<value> type; + typedef mpl::bool_<has_const_time_erase<T>::value> type; }; } // namespace algorithm