Re: Looking for std::map::erase_if

2021-03-21 Thread Willem Jan Withagen via freebsd-toolchain

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& c, Predicate pred); 
 // C++20
  void erase_if(multimap& 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 > 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 

Anybody suggestions on libraries to get something matching??

Thanx,
--WjW
___
freebsd-hack...@freebsd.org 
mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to
"freebsd-hackers-unsubscr...@freebsd.org
"



___
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"


Looking for std::map::erase_if

2021-03-21 Thread Willem Jan Withagen via freebsd-toolchain

Hi,

[ Trying this on FBSD 12.2 ]

In the Ceph code new code uses std::map::erase_if.
Which is in Linux imported from 

Anybody suggestions on libraries to get something matching??

Thanx,
--WjW
___
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"


Re: Looking for std::map::erase_if

2021-03-20 Thread Dimitry Andric
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  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  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& c, Predicate pred);  //
>> C++20
>>  void erase_if(multimap& 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-hack...@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 
>>> 
>>> Anybody suggestions on libraries to get something matching??
>>> 
>>> Thanx,
>>> --WjW
>>> ___
>>> freebsd-hack...@freebsd.org mailing list
>>> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>>> To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org
>>> "
>>> 
>> 
>> 
> ___
> freebsd-toolchain@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
> To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"



signature.asc
Description: Message signed with OpenPGP


Re: Looking for std::map::erase_if

2021-03-20 Thread Alan Somers
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  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& c, Predicate pred);  //
> C++20
>   void erase_if(multimap& 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-hack...@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 
>>
>> Anybody suggestions on libraries to get something matching??
>>
>> Thanx,
>> --WjW
>> ___
>> freebsd-hack...@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>> To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org
>> "
>>
>
>
___
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"


Re: Looking for std::map::erase_if

2021-03-20 Thread Alan Somers
It looks like it's in there.  What code are you trying that doesn't work?

> grep erase_if  /usr/include/c++/v1/map
  void erase_if(map& c, Predicate pred);  //
C++20
  void erase_if(multimap& 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-hack...@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 
>
> Anybody suggestions on libraries to get something matching??
>
> Thanx,
> --WjW
> ___
> freebsd-hack...@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"
>
___
freebsd-toolchain@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
To unsubscribe, send any mail to "freebsd-toolchain-unsubscr...@freebsd.org"