Hi, as mentioned in the docs, it is necessary to tell MS VC++ all template parameters of an iterator_adaptor *explicitly*.
Unfortunately, it seems one cannot do that for a permutation_iterator, since permutation_iterator_generator just takes ElementIterator and IndexIterator as its template parameters. I propose extending the code like this: template< typename ElementIterator, typename IndexIterator, // Reasonable default, but can be passed explicitly for MSVC: typename ValueType = boost::detail::iterator_traits<ElementIterator>::value_type // etc. > struct permutation_iterator_generator { typedef boost::iterator_adaptor < ElementIterator, permutation_iterator_policies< IndexIterator >, ValueType // etc. > type; }; in order to write something like typedef permutation_iterator_generator< element_range_type::iterator, index_type::iterator, element_range_type::value_type // tells MSVC++ the value_type >::type to keep MSVC quiet. I'm not sure, but I think I saw the same trick for some other iterator adaptors. Comments? - Roland _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost