On 02/16/2014 01:35 PM, Hannes Steffenhagen wrote:
isImplicitlyConvertible!(int,ulong) is true. Maybe this is just me, but
I get the impression that this is quite nuts. Why is an implicit
conversion from a signed to an unsigned type possible? The other way
round would be at least somewhat understandable if there's a static
check that the values actually fit.

I don't know all of the reasons but it is at least about convenience. It is possible to write expressions like 'u + diff' without explicit casts:

    ulong u = 10;
    int diff = -3;
    auto a = u + diff;
    static assert(is (typeof(a) == ulong));

Related, the type of 'a' above is implied as ulong due to arithmetic conversions, which are sometimes very confusing as well. See "Usual Arithmetic Conversions" here:

  http://dlang.org/type.html

Ali

Reply via email to