--- Comment #4 from Don <> 2010-11-15 15:06:34 PST ---
(In reply to comment #3)
> Mr Bs test case is wrong:
> static assert((cast(short)-1 >>> 1) == int.max);
> should be:
> static assert((cast(short)-1 >>> 1) == short.max);

Not so. You might be thinking of this, which _is_ true:
static assert((cast(short)-1 >>> cast(short)1) == short.max);

The problem is that >>> interacts badly with implicit type conversions.
With every other operator,  typeof(short OP int) == int.

Possible solutions are:
(a) special case for >>>
(b) disallow >>> for types smaller than int
(c) drop it from the language
Personally I think (c) is the only option that makes sense.

> unsigned right shift is perfectly well defined,
> though giving it it's own operator seems like overkill.
> I think it would be better as a function in std.intrinsic.

You don't need it at all. Just cast to unsigned, then >>.
>>> is a ridiculous operator.

> You aren't going to use unsigned shift unless you know what you doing and care
> about performance.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to