Looking for std::map::erase_if
Dimitry Andric
dim at FreeBSD.org
Sat Mar 20 17:48:44 UTC 2021
Well, -std=c++20 even, it is that new. :)
That said, it's always hazardous to rely on experimental features, they are effectively unsupported.
As shown on e.g. cppreference.com, you can use an equivalent function that looks like:
auto old_size = c.size();
for (auto i = c.begin(), last = c.end(); i != last; ) {
if (pred(*i)) {
i = c.erase(i);
} else {
++i;
}
}
-Dimitry
> On 20 Mar 2021, at 16:22, Alan Somers <asomers at FreeBSD.org> wrote:
>
> I'm just guessing, but I think you should remove the "experimental" and
> build with -std=c++17 .
> -Alan
>
> On Sat, Mar 20, 2021 at 9:06 AM Willem Jan Withagen <wjw at digiware.nl> wrote:
>
>> On 20-3-2021 15:46, Alan Somers wrote:
>>
>> It looks like it's in there. What code are you trying that doesn't work?
>>
>> Hi Alan,
>>
>> I thought so too, but all tries last 2 weeks did not result into anything
>> that got it compiling...
>> But could be that I did not try hard enough, real work is pulling a lot
>> atm.
>>
>> Code is at:
>>
>> https://github.com/dillaman/ceph/blob/138d71fb0635682510cadda8e4ad5aaab3f39e44/src/librbd/api/Trash.cc#L299
>>
>> Thanx,
>> --WjW
>>
>>
>>> grep erase_if /usr/include/c++/v1/map
>> void erase_if(map<Key, T, Compare, Allocator>& c, Predicate pred); //
>> C++20
>> void erase_if(multimap<Key, T, Compare, Allocator>& c, Predicate pred);
>> // C++20
>> void erase_if(map<_Key, _Tp, _Compare, _Allocator>& __c, _Predicate __pred)
>> { __libcpp_erase_if_container(__c, __pred); }
>> void erase_if(multimap<_Key, _Tp, _Compare, _Allocator>& __c, _Predicate
>> __pred)
>> { __libcpp_erase_if_container(__c, __pred); }
>>
>> On Sat, Mar 20, 2021 at 8:39 AM Willem Jan Withagen via freebsd-hackers <
>> freebsd-hackers at freebsd.org> wrote:
>>
>>> Hi,
>>>
>>> [ Trying this on FBSD 12.2 ]
>>>
>>> In the Ceph code new code uses std::map::erase_if.
>>> Which is in Linux imported from <experimental/map>
>>>
>>> Anybody suggestions on libraries to get something matching??
>>>
>>> Thanx,
>>> --WjW
>>> _______________________________________________
>>> freebsd-hackers at freebsd.org mailing list
>>> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org
>>> "
>>>
>>
>>
> _______________________________________________
> freebsd-toolchain at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
> To unsubscribe, send any mail to "freebsd-toolchain-unsubscribe at freebsd.org"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 223 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.freebsd.org/pipermail/freebsd-toolchain/attachments/20210320/f276e3b5/attachment.sig>
More information about the freebsd-toolchain
mailing list