On Thu, Sep 19, 2013 at 12:52:55AM +0200, Dicebot wrote:
> On Wednesday, 18 September 2013 at 22:20:45 UTC, H. S. Teoh wrote:
> >If the C function only accepts int, then just use to!int(array.size).
> >If the size overflows int, to() will throw an exception which you can
> >handle. This is probably the best you can do anyway, since if the C
> >function doesn't take anything bigger than int, then there's no way
> >you can pass the real size to it.
> 
> Ah, `to!()` does check valid ranges before conversion? Good to know,
> thanks.

Yes, it's handled explicitly by the following overload of toImpl() in
std.conv:

        T toImpl(T, S)(S value)
            if (!isImplicitlyConvertible!(S, T) &&
                (isNumeric!S || isSomeChar!S || isBoolean!S) &&
                (isNumeric!T || isSomeChar!T || isBoolean!T) && !is(T == enum))
        {
            ...
        }


T

-- 
Too many people have open minds but closed eyes.

Reply via email to