Mark Mitchell <[EMAIL PROTECTED]> wrote:
> IMO, if these are C++-only, it's relatively easy to deprecate these
> extension -- but I'd like to hear from Jason and Nathan, and also the
> user community before we do that. Of all the extensions we've had, this
> one really hasn't been that problematic.
I would prefer them to stay. My reasons:
1) std::min() and std::max() are not exact replacements. For instance, you
cannot do std::min(3, 4.0f) because the arguments are of different type.
Also, you cannot use reference to non-const types as arguments. The min/max
exensions do not suffer from these problems (I consider the former very
problematic, and the latter just annoying).
2) The min/max assignments are very useful. I'm speaking of the
(undocumented?) ">?=" and "<?=" operators. They save much more typing. For
instance, I use:
for (int i=0; i<100; i++)
max_computed >?= Compute(i) * factor;
instead of:
for (int i=0;i<100;i++)
{
float cur = Compute(i) * factor;
if (max_computed < cur)
max_computed = cur;
}
I find the former more compact, more expressive and much easier to read (of
course, you have to know to syntax). I find it also less error-prone since
there is no duplication, nor the use of a variable to prevent side-effects.
I suppose that if we drop ">?" and "<?", we are also going to drop ">?=" and
"<?=", this is why I'm giving arguments for both.
In fact, I find the min/max assignment operators so useful that I would even
propose it for standardization.
--
Giovanni Bajo