[phobos] [Fwd: "Unsigned-related bugs never occur in real code."]

Andrei Alexandrescu 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");

Andrei



More information about the phobos mailing list