forked from boostorg/unordered
Implement erase(), get erase_tests passing
This commit is contained in:
@ -590,6 +590,8 @@ private:
|
||||
template<typename,typename,typename,typename>
|
||||
class table;
|
||||
|
||||
class const_iterator_cast_tag {};
|
||||
|
||||
template<typename Value,typename Group,bool Const>
|
||||
class table_iterator
|
||||
{
|
||||
@ -604,6 +606,9 @@ public:
|
||||
template<bool Const2,typename std::enable_if<!Const2>::type* =nullptr>
|
||||
table_iterator(const table_iterator<Value,Group,Const2>& x):
|
||||
pc{x.pc},p{x.p}{}
|
||||
table_iterator(
|
||||
const_iterator_cast_tag, const table_iterator<Value,Group,true>& x):
|
||||
pc{x.pc},p{x.p}{}
|
||||
|
||||
inline reference operator*()const noexcept{return *p;}
|
||||
inline pointer operator->()const noexcept{return p;}
|
||||
|
@ -239,6 +239,14 @@ namespace boost {
|
||||
|
||||
void erase(iterator pos) { table_.erase(pos); }
|
||||
void erase(const_iterator pos) { return table_.erase(pos); }
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
while (first != last) {
|
||||
this->erase(first++);
|
||||
}
|
||||
return iterator{detail::foa::const_iterator_cast_tag{}, last};
|
||||
}
|
||||
|
||||
size_type erase(key_type const& key) { return table_.erase(key); }
|
||||
|
||||
/// Lookup
|
||||
|
@ -176,6 +176,14 @@ namespace boost {
|
||||
}
|
||||
|
||||
void erase(const_iterator pos) { return table_.erase(pos); }
|
||||
iterator erase(const_iterator first, const_iterator last)
|
||||
{
|
||||
while (first != last) {
|
||||
this->erase(first++);
|
||||
}
|
||||
return iterator{detail::foa::const_iterator_cast_tag{}, last};
|
||||
}
|
||||
|
||||
size_type erase(key_type const& key) { return table_.erase(key); }
|
||||
|
||||
/// Lookup
|
||||
|
Reference in New Issue
Block a user