
The aforementioned rev includes the following new member function: test_unit_id test_suite::get( const_string tu_name ) const { BOOST_TEST_FOREACH( test_unit_id, id, m_members ) { if( const_string(framework::get( id, test_id_2_unit_type( id ) ).p_name) == tu_name ) return id; } return INV_TEST_UNIT_ID; } which unfortunately results in the following code: #include <boost/test/included/test_exec_monitor.hpp> int test_main(int,char *[]) { return 0; } failing in MSVC++ 6.0 (and possibly also 7.0) with: ...\boost\test\impl\unit_test_suite.ipp(158) : error C2676: binary '==' : 'class boost::unit_test::readwrite_property<class std::basic_string<char,struct std::char_traits<char>, class std::allocator<char> > >' does not define this operator or a conversion to a type acceptable to the predefined operator Looks like the compiler is having a hard time with ADLing the appropriate overload of operator== in this particular dependent context. By changing the offending line like this, however, if( const_string( framework::get( id, test_id_2_unit_type( id ) ).p_name ) == tu_name ) everything works fine (checked in MSVC++ 6.0 and GCC 3.2). As this is a rather innocent change and definitely helps poor old MSVC++ 6.0, is it OK to commit the attached patch? Thank you, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo Index: unit_test_suite.ipp =================================================================== --- unit_test_suite.ipp (revision 40053) +++ unit_test_suite.ipp (working copy) @@ -155,7 +155,7 @@ test_suite::get( const_string tu_name ) const { BOOST_TEST_FOREACH( test_unit_id, id, m_members ) { - if( framework::get( id, test_id_2_unit_type( id ) ).p_name == tu_name ) + if( const_string( framework::get( id, test_id_2_unit_type( id ) ).p_name ) == tu_name ) return id; }