From: Andy Little (andy_at_[hidden])
Date: 2006-08-21 18:21:32
"Andy Little" <andy_at_[hidden]> wrote in message
> "Deane Yang" <deane_yang_at_[hidden]> wrote in message
>> Eric Lemings wrote:
>>>> This brings up a good question. Say you have two objects:
>>>> meters m = 1;
>>>> feet f = 2;
>>>> What is the type (or unit) of the following expression?
>>> m + f;
>> I apologize for repeating myself, but I want this to fail to compile. I
>> do not want implicit conversion of units. I believe I am not completely
>> alone in this view.
> Personally I love implicit unit conversions. :-)
> I can add a function to prevent them, but you will have to apply that
> T b = no_cast(a);
> or some such.
> How's that?
> Andy Little
For addition you would need to do this:
nocast(a) + nocast(b);
nocast(a) * nocast(b);
You could make this a general purpose utility:
template <typename T>
template <typename T1, typename T2>
operator Op (nocaster<T1> ,nocaster<T2>);
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk