[phobos] [Fwd: "Unsigned-related bugs never occur in real code."]
andrei at erdani.com
Thu Jan 21 16:11:53 PST 2010
Sean Kelly wrote:
> On Jan 21, 2010, at 9:58 AM, Andrei Alexandrescu wrote:
>> Sean Kelly wrote:
>>> Yeah, I was mostly responding to your earlier comment that casting didn't work for you. If you really wanted to cast it would be to ptrdiff_t anyway.
>>> I agree that there's a more fundamental problem though. Weren't we going to make implicit narrowing conversions an error? I know it isn't in the spirit of c, but c allows all sorts of horrible nonsense.
>> Implicit narrowing conversions are already disabled. But code involving cast is explicit.
> Sure, but if abs() took an int or long then it wouldn't compile without a cast, right?
Unfortunately it does because int <-> uint and long <-> ulong
automatically. We couldn't disable that.
What we can do is to use "negative overloading" - accept unsigned types
but reject them via assert(false, "windows sucks");
More information about the phobos