[libstdc++] Add C++17clamp
Jonathan Wakely
jwakely@redhat.com
Fri Jul 22 07:55:00 GMT 2016
On 22/07/16 08:51 +0100, Jonathan Wakely wrote:
>On 21/07/16 19:38 -0400, NightStrike wrote:
>>On Thu, Jul 14, 2016 at 7:50 PM, Ed Smith-Rowland <3dw4rd@verizon.net> wrote:
>>>Here is an implementation of P0025
>>>An algorithm to "clamp" a value between a pair of boundary values.
>>>
>>>Testing is almost finished - looks good so far.
>>>
>>>OK if testing passes?
>>>
>>>I didn't see a feature test in any of the SD-6 papers or P0025.
>>>
>>
>>This is not an efficient implementation. See here:
>>
>>https://gcc.gnu.org/ml/gcc-help/2014-10/msg00112.html
>>
>>Which I derived from this SO answer (which is sadly not the accepted
>>answer at this time):
>>
>>http://stackoverflow.com/a/16659263
>>
>>I suggest using the very efficient method that requires a temporary.
>
>That isn't a valid implementation of std::clamp, since it performs a
>copy. The template argument might not even be copyable.
We could possibly dispatch to such an implementation for arithmetic
types, but we wouldn't want to do it for all copyable types. There's
no way you can know whether making that local copy is expensive for an
arbitrary type, and making a copy isn't allowed anyway.
More information about the Libstdc++
mailing list