MIN MAX problem
janderson
askme at me.com
Tue Mar 13 22:40:17 PDT 2007
freeagle wrote:
> Hey all,
>
> from what I know, there is (currently?) no way of implementing min/max
> template functions that could dynamically change return type depending
> on the result of comparison. I think that this problem can be "solved"
> easily. When used in C++, there is no problem with the return type as
> min/max are coded as macros. But there is always probability that the
> result of the min/max will be cast into appropriate type, because
> variables cant be both float and int at the same time, for example.
> That means, when you write in C++
>
> float f = 1.0f, result;
> int a = 2;
> result = MAX(f, a);
>
> the result is cast to float when assignment to the variable is being
> done. This means you always know of what type you want the result to be.
> I say we could move the casting into the function itself, like this:
>
> T max(T, U)(T arg1, U arg2)
> {
> return cast(T) (arg1 > arg2 ? arg1 : arg2);
> }
>
> and make it a standard that the type of the first argument will always
> be the returning type of the min/max function.
>
> Just a thought
>
> freeagle
In C++ you can use some copy constructor / assignment magic with a proxy
object to get the task done. That technique won't handle different
types in the same query though.
-Joel
More information about the Digitalmars-d
mailing list