
The attached fix makes all tests compile for msvc (not all run, though) and hopefully also for the other two toolsets (can't try myself.) Two changes applied, both in list_insert.hpp: 1. MSVC++ 6.0/7.0, in the presence of a templated memfuns, interprets additional overloads as if they were specializations of the former (which is not legal C++, AFAIK). This introduces problems with the copy ctors of list_insert, which can be workarounded by a) making the template copy ctor accept const references b) declaring and defining the plain default copy ctor of list_insert *after* the templated copy ctor. 2. list_insert::operator()(T t) has been changed to accept a const reference instead. With these changes, all tests build, though three of them crash at run-time (list_inserter, list_of and multi_index_container) I've checked the changes with a compiler other than MSVC (GCC 3.2), seems like nothing ain't broken. I've got two questions: 1. Could somebody (the author, I guess) validate these changes for commit? 2. list_inserter follows a strange convention (IMHO) of not forcing template params to be const references in its various copy ctors and assignment operators, for instance: list_inserter( Function fun ); template< class T > list_inserter& operator=( T r ); Any reason for this approach? I don't know if this can pose problems, but to me having these qualified with const & seems like the usual way. Joaquín M López Muñoz Telefónica, Investigación y Desarrollo 164c164 < ---
168,170d167 < list_inserter( const list_inserter& r ) : insert_( r.insert_ ) < {} < 172c169 < list_inserter( list_inserter<Function2,Arg> r ) ---
list_inserter( const list_inserter<Function2,Arg>& r )
175a173,175
list_inserter( const list_inserter& r ) : insert_( r.insert_ ) {}
239c239 < list_inserter& operator()( T t ) ---
list_inserter& operator()( const T& t )