Date: Sat, 20 Mar 2021 18:48:33 +0100 From: Dimitry Andric <dim@FreeBSD.org> To: Alan Somers <asomers@FreeBSD.org> Cc: Willem Jan Withagen <wjw@digiware.nl>, FreeBSD Hackers <freebsd-hackers@freebsd.org>, FreeBSD Toolchain <freebsd-toolchain@freebsd.org> Subject: Re: Looking for std::map::erase_if Message-ID: <9125B9BA-5B64-46AD-AB61-032889B0BE82@FreeBSD.org> In-Reply-To: <CAOtMX2gxR%2BEjUK%2BurZFP%2BTP6p=W4rPsk37U0oHGmassqxW930g@mail.gmail.com> References: <941ef2dc-e6e1-bd30-0533-f6789b1463b5@digiware.nl> <CAOtMX2g4E3VUQkBe=mBOejpnkDAd2yMn9SChw=5ReMx4Aoe9Fw@mail.gmail.com> <499f895c-d614-86bd-2371-a6dd3ac349d7@digiware.nl> <CAOtMX2gxR%2BEjUK%2BurZFP%2BTP6p=W4rPsk37U0oHGmassqxW930g@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_D7ACBEB2-C3A7-4196-B4EC-D6DB66633CD0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Well, -std=3Dc++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 =3D c.size(); for (auto i =3D c.begin(), last =3D c.end(); i !=3D last; ) { if (pred(*i)) { i =3D c.erase(i); } else { ++i; } } -Dimitry > On 20 Mar 2021, at 16:22, Alan Somers <asomers@FreeBSD.org> wrote: >=20 > I'm just guessing, but I think you should remove the "experimental" = and > build with -std=3Dc++17 . > -Alan >=20 > On Sat, Mar 20, 2021 at 9:06 AM Willem Jan Withagen <wjw@digiware.nl> = wrote: >=20 >> On 20-3-2021 15:46, Alan Somers wrote: >>=20 >> It looks like it's in there. What code are you trying that doesn't = work? >>=20 >> Hi Alan, >>=20 >> 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. >>=20 >> Code is at: >>=20 >> = https://github.com/dillaman/ceph/blob/138d71fb0635682510cadda8e4ad5aaab3f3= 9e44/src/librbd/api/Trash.cc#L299 >>=20 >> Thanx, >> --WjW >>=20 >>=20 >>> 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); } >>=20 >> On Sat, Mar 20, 2021 at 8:39 AM Willem Jan Withagen via = freebsd-hackers < >> freebsd-hackers@freebsd.org> wrote: >>=20 >>> Hi, >>>=20 >>> [ Trying this on FBSD 12.2 ] >>>=20 >>> In the Ceph code new code uses std::map::erase_if. >>> Which is in Linux imported from <experimental/map> >>>=20 >>> Anybody suggestions on libraries to get something matching?? >>>=20 >>> Thanx, >>> --WjW >>> _______________________________________________ >>> freebsd-hackers@freebsd.org mailing list >>> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers >>> To unsubscribe, send any mail to = "freebsd-hackers-unsubscribe@freebsd.org >>> " >>>=20 >>=20 >>=20 > _______________________________________________ > freebsd-toolchain@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain > To unsubscribe, send any mail to = "freebsd-toolchain-unsubscribe@freebsd.org" --Apple-Mail=_D7ACBEB2-C3A7-4196-B4EC-D6DB66633CD0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.2 iF0EARECAB0WIQR6tGLSzjX8bUI5T82wXqMKLiCWowUCYFY1cgAKCRCwXqMKLiCW o0K7AKDRg+ynTANYSuoru0z7AvijhLXzXwCgujVObtyYtPaUyg19GqkSVCRlFhI= =ijzk -----END PGP SIGNATURE----- --Apple-Mail=_D7ACBEB2-C3A7-4196-B4EC-D6DB66633CD0--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9125B9BA-5B64-46AD-AB61-032889B0BE82>