|
Boost : |
Subject: Re: [boost] [Review:Algorithms] Order of args to clamp
From: TONGARI (tongari95_at_[hidden])
Date: 2011-09-27 11:58:59
2011/9/27 Marshall Clow <mclow.lists_at_[hidden]>
> On Sep 27, 2011, at 7:34 AM, Steven Watanabe wrote:
> > On 09/27/2011 07:23 AM, Gordon Woodhull wrote:
> >> On Sep 26, 2011, at 2:17 PM, TONGARI <tongari95_at_[hidden]> wrote:
> >>
> >>> 2011/9/27 Peter Dimov <pdimov_at_[hidden]>
> >>>
> >>>> Then clamp should be
> >>>>
> >>>> template<class T> T clamp( T const & value,
> >>>> typename identity<T>::type const & low,
> >>>> typename identity<T>::type const & high );
> >>>
> >>>
> >>> I second this. BTW, The return type could be T const&.
> >>
> >> Okay, I'll bite. Why identity and not just T?
> >>
> >> (I thought this might be a joke at first.)
> >>
> > Using identity means that T is deduced solely based on the first
> argument.
>
>
> A couple of interesting results that I found playing around this morning
>
> namespace ba = boost::algorithm;
>
> short foo = 50;
> BOOST_CHECK_EQUAL ( 56, ba::clamp ( foo, 56.9, 129 ));
> BOOST_CHECK_EQUAL ( 24910, ba::clamp ( foo, 12345678, 123456999 ));
>
That would be the downside.
But at least g++ and clang gave me warnings.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk