For BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION: I've updated boost/detail/iterator so that it responds to BOOST_TT_BROKEN_COMPILER_SPEC, and issues an error asking the user to invoke BOOST_TT_BROKEN_COMPILER_SPEC when iterator_traits is used on pointer types for which there's no remove_pointer specialization.
Note that because of vc7's screwy error reporting where it shows expanded typedefs, to get the message to show up in the diagnostic I had to make a compromise: whereas in vc6 you get an error only if you try to use the broken parts of iterator_traits (value_type and reference are incomplete types), in vc7 you get an error whenever you try to instantiate iterator_traits<T*>. That means e.g., that you can't access iterator_category on U* unless BOOST_TT_BROKEN_COMPILER_SPEC has been invoked on U. This does have an impact on real code, as several of the boost/lib/iterator/test programs showed. You can see for yourself by grepping for "1300" there. The other possible option would have been to simply not give the user a readable error message. I'm open to opinions that I chose the wrong balance. -- Dave Abrahams Boost Consulting www.boost-consulting.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost