mirror of
https://github.com/boostorg/unordered.git
synced 2025-11-02 16:51:39 +01:00
moved erase_if_impl from foa::table_core into foa::table
This commit is contained in:
@@ -1616,16 +1616,6 @@ public:
|
||||
return it;
|
||||
}
|
||||
|
||||
template<typename Predicate>
|
||||
std::size_t erase_if_impl(Predicate&& pr)
|
||||
{
|
||||
std::size_t s=size();
|
||||
for_all_elements([&,this](group_type* pg,unsigned int n,element_type* p){
|
||||
if(pr(type_policy::value_from(*p))) erase(pg,n,p);
|
||||
});
|
||||
return std::size_t(s-size());
|
||||
}
|
||||
|
||||
template<typename F>
|
||||
void for_all_elements(F f)const
|
||||
{
|
||||
|
||||
@@ -420,9 +420,16 @@ public:
|
||||
using super::reserve;
|
||||
|
||||
template<typename Predicate>
|
||||
friend std::size_t erase_if(table& x,Predicate pr)
|
||||
friend std::size_t erase_if(table& x,Predicate&& pr)
|
||||
{
|
||||
return x.erase_if_impl(pr);
|
||||
std::size_t s=size();
|
||||
this->for_all_elements(
|
||||
[&,this](group_type* pg,unsigned int n,element_type* p){
|
||||
if(pr(const_cast<const value_type&>(type_policy::value_from(*p))){
|
||||
this->erase(pg,n,p);
|
||||
}
|
||||
});
|
||||
return std::size_t(s-size());
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user