|
Boost : |
Subject: Re: [boost] [Review:Algorithms] Order of args to clamp
From: Olaf van der Spek (ml_at_[hidden])
Date: 2011-09-24 10:31:05
On Fri, Sep 23, 2011 at 6:21 PM, Phil Endecott
<spam_from_boost_dev_at_[hidden]> wrote:
> template<typename V>
> V clamp ( V val, V lo, V hi );
>
> I have a clamp function that orders the args low - middle - high, which
> seems like a more natural ordering to me. Is there some rationale or
> precedent for this middle - low - high ordering? I think the confusion
lo and hi will often be short literals, while val might be longer.
Having lo and hi close together seems like a good idea.
If val is really long, it might even be better to have lo and hi
before val, as is sometimes seen with (if X == f()) where X is a
constant.
> I note that this function takes its args by value, while std::min & max take
> const references. What is the rationale for this?
Probably just an oversight.
> compile, and (b) conversions from const char* to std::string will only
> happen when necessary, not unconditionally for all of the arguments.
I guess that depends on the optimizer. I've been wondering, are
compilers good enough nowadays to construct std::string from string
literals at compile-time?
On Sat, Sep 24, 2011 at 11:04 AM, John Bytheway
<jbytheway+boost_at_[hidden]> wrote:
> Yes, it does buy you something. std::less defines a total ordering on
> pointers, operator< need not. (See N3290 [comparisons] 20.8.5 p8)
I'm not sure clamping pointers is a good idea.
Olaf
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk