Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-13 Thread François Dumont
Thanks for those additional information. I still think that the same way we rely on STL algos for push_heap/pop_heap/... we should do it for copy/move/... from stl_algobase.h for RAI. In fact range algos that are already trying to call C functions should just try to call the STL counterparts

Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-13 Thread Jonathan Wakely
On 13/02/20 19:07 +0100, François Dumont wrote: On 2/4/20 3:07 AM, Patrick Palka wrote: This patch implements the C++20 ranges overloads for the algorithms in [algorithms]. Most of the algorithms were reimplemented, with each of their implementations very closely following the existing implemen

Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-13 Thread François Dumont
On 2/4/20 3:07 AM, Patrick Palka wrote: This patch implements the C++20 ranges overloads for the algorithms in [algorithms]. Most of the algorithms were reimplemented, with each of their implementations very closely following the existing implementation in bits/stl_algo.h and bits/stl_algobase.h

Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-07 Thread Jonathan Wakely
On 03/02/20 21:07 -0500, Patrick Palka wrote: + template +struct binary_transform_result +{ + [[no_unique_address]] _Iter1 in1; + [[no_unique_address]] _Iter2 in2; + [[no_unique_address]] _Out out; + + template + requires convertible_to && + && converti

Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-06 Thread Patrick Palka
On Thu, 6 Feb 2020, Jonathan Wakely wrote: > On 03/02/20 21:07 -0500, Patrick Palka wrote: > > +#ifndef _RANGES_ALGO_H > > +#define _RANGES_ALGO_H 1 > > + > > +#if __cplusplus > 201703L > > + > > +#include > > +#include > > +#include > > +// #include > > This line could be removed, or leave i

Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-06 Thread Jonathan Wakely
On 03/02/20 21:07 -0500, Patrick Palka wrote: +#ifndef _RANGES_ALGO_H +#define _RANGES_ALGO_H 1 + +#if __cplusplus > 201703L + +#include +#include +#include +// #include This line could be removed, or leave it as a reminder to me to refactor so that the small utility pieces are in a small

Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-06 Thread Jonathan Wakely
On 05/02/20 19:39 +0100, François Dumont wrote: Hi     Is it me or the patch isn't an attachment ? It is far more convenient to provide something easy to extract and apply locally. On 2/4/20 3:07 AM, Patrick Palka wrote: This patch implements the C++20 ranges overloads for the algorithms in

Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-06 Thread Jonathan Wakely
On 05/02/20 14:24 -0500, Patrick Palka wrote: Also IIRC, the way __miter_base() is currently defined assumes that the underlying iterator is copyable which is not necessarily true anymore for non-forward iterators. So I would have to also fix __miter_base() which might be risky to do at this sta

Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-05 Thread Patrick Palka
[resending with attachment now compressed] On Wed, 5 Feb 2020, François Dumont wrote: > Hi > >     Is it me or the patch isn't an attachment ? It is far more convenient to > provide something easy to extract and apply locally. Good point, I've attached the patch as an attachment and I'll make s

Re: [PATCH 2/3] libstdc++: Implement C++20 constrained algorithms

2020-02-05 Thread François Dumont
Hi     Is it me or the patch isn't an attachment ? It is far more convenient to provide something easy to extract and apply locally. On 2/4/20 3:07 AM, Patrick Palka wrote: This patch implements the C++20 ranges overloads for the algorithms in [algorithms]. Most of the algorithms were reimpl