26 :
public boost::iterator_facade<Size_iterator<T_it>, std::size_t const, boost::forward_traversal_tag> {
27 friend class boost::iterator_core_access;
30 bool equal(
Size_iterator const& other)
const {
return (is_end_ && other.is_end_); }
32 std::size_t
const& dereference()
const {
return value_; }
35 if (++t_it_ == t_end_) {
39 value_ = t_it_->size() - 1;
43 Size_iterator(
const T_it& t_begin,
const T_it& t_end) : t_it_(t_begin), t_end_(t_end), is_end_(t_begin == t_end) {
44 if (!is_end_) value_ = t_it_->size() - 1;