
From: "David Abrahams" dave@boost-consulting.com
"Sean Huang" <huangsean@hotmail.com> writes:
My question is why limiting the last three template parameters to default in counting_iterator::distance_to.
Sorry, I don't understand the question.
The only thing that's limited here is that you can only compare counting iterators that have the same CategoryOrTraversal and Difference parameters. That might be a bit shortsighted; maybe we should have additional template arguments to distance_to. Sorry, I meant the last TWO template parameters.
The distance_to is declared as: template < class OtherIncrementable > difference_type distance_to(counting_iterator<OtherIncrementable > const& y) const; My understanding is this is equivent to (correct me if I am wrong): template < class OtherIncrementable > difference_type distance_to(counting_iterator<OtherIncrementable, boost::use_default, boost::use_default > const& y) const; To do what you want, shouldn't it be: template < class OtherIncrementable > difference_type distance_to(counting_iterator<OtherIncrementable, CategoryOrTraversal, Difference > const& y) const; Maybe the compiler is wrong? Thanks, Sean