
Oops, forgot to send this: template<typename range_type> struct bounded_iterator_type { typedef bounded_iterator<typename boost::range_iterator<range_type>::type> type; }; Neal Becker wrote:
Maybe add these:
template<typename range_type> inline bounded_iterator<typename boost::range_iterator<range_type>::type> make_bounded_iterator (range_type & r) { return bounded_iterator<typename boost::range_iterator<range_type>::type> (r); }
template<typename range_type> inline bounded_iterator<typename boost::range_iterator<range_type>::type> make_bounded_iterator (range_type const& r) { return bounded_iterator<typename boost::range_iterator<range_type>::type> (r); }
Now you can do:
template<typename out_t, typename in_t> inline out_t Map (in_t const& in) const { out_t out (boost::size (in)); typename boost::range_iterator<out_t>::type o = boost::begin (out); typename bounded_iterator_type<in_t>::type i = make_bounded_iterator<in_t> (in);
for (; i; ++i, ++o) *o = Map1 (*i);
return out; }
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost