|
|
@@ -194,27 +194,30 @@ private:
|
|
|
if (lookup.second == lookup.first->end()) {
|
|
|
return Iterator{};
|
|
|
} else {
|
|
|
- return { ::iterator::in_place, make_end_aware_iterator(lookup.first, bkt.end()), make_end_aware_iterator(lookup.second, lookup.first->end()) };
|
|
|
+ return { ::iterator::in_place, make_end_aware_iterator(lookup.first, bkt.end()),
|
|
|
+ make_end_aware_iterator(lookup.second, lookup.first->end()) };
|
|
|
}
|
|
|
}
|
|
|
|
|
|
internal_iterator unconst_iterator(const_iterator const & it) {
|
|
|
- ::iterator::end_aware_iterator<typename impl_type::const_iterator> lit = it;
|
|
|
- ::iterator::end_aware_iterator<local_const_iterator> iter = it;
|
|
|
+ auto lit = std::get<0>(it);
|
|
|
+ auto iter = std::get<1>(it);
|
|
|
|
|
|
if ( lit.done() ) { return {}; }
|
|
|
auto nit = buckets_.begin();
|
|
|
std::advance(nit, std::distance(buckets_.cbegin(), lit.current()));
|
|
|
|
|
|
- return { ::iterator::in_place, make_end_aware_iterator(nit, buckets_.end()), make_end_aware_iterator(nit->erase(iter.current(), iter.current()), nit->end()) };
|
|
|
+ return { ::iterator::in_place, make_end_aware_iterator(nit, buckets_.end()),
|
|
|
+ make_end_aware_iterator(nit->erase(iter.current(), iter.current()), nit->end()) };
|
|
|
}
|
|
|
|
|
|
internal_iterator erase_impl(internal_iterator it) {
|
|
|
- ::iterator::end_aware_iterator<typename impl_type::iterator> b = it;
|
|
|
- ::iterator::end_aware_iterator<typename bucket_type::iterator> l = it;
|
|
|
+ auto b = std::get<0>(it);
|
|
|
+ auto l = std::get<1>(it);
|
|
|
if ( b.done() || l.done() ) { return it; }
|
|
|
--size_;
|
|
|
- return { ::iterator::in_place, make_end_aware_iterator(b.current(), b.end()), make_end_aware_iterator(b->erase(l.current()), l.end()) };
|
|
|
+ return { ::iterator::in_place, make_end_aware_iterator(b.current(), b.end()),
|
|
|
+ make_end_aware_iterator(b->erase(l.current()), l.end()) };
|
|
|
}
|
|
|
private: // members
|
|
|
impl_type buckets_{default_buckets};
|