Re: What's wrong with this picture?
On Jan 6, 9:52 am, lont...@gmail.com wrote:
Below is a copy of reference implementation from "Improved min/max"
proposal for upcoming C++0x standard library (http://www.open-std.org/
JTC1/SC22/WG21/docs/papers/2007/n2199.html). Anyone else thinks that
something must be wrong with a language if this is how min/max has to
be implemented?
..
Indeed. Specifically, what's wrong with the language is that there is
no way to write a function that has a single return statement without
specifying its return type. min is simply
function min( x, y ) { return x < y? x: y; }
and while it's (or will be in C++0x) possible to somewhat approximate
the lack of explicit argument types:
template<class X, class Y> ... min( X && x, Y && y )
{
return x < y? std::forward<X>( x ): std::forward<Y>( y );
}
the ... part is harder. It's possible that we'll be able to write min
this way:
template<class X, class Y> auto min( X && x, Y && y ) ->
decltype( x < y? std::forward<X>( x ): std::forward<Y>( y ) )
{
return x < y? std::forward<X>( x ): std::forward<Y>( y );
}
There's still something wrong with the language though. :-)
It will be funny if we end up with
auto min = <>( x, y ) { x < y? x: y }
as the easiest way to write min. :-)
---
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html ]