Hello. I was trying to do something like this:
ubyte code = to!ubyte(spec, 6) + 16;
and got an error saying:
cannot implicitly convert expression (cast(int)to(spec, 6) + 16) of type int
to ubyte
Looking at http://dlang.org/spec/lex.html#IntegerLiteral, sure enough 16 is
specified to be
On Monday, 14 December 2015 at 13:33:41 UTC, Shriramana Sharma
wrote:
ubyte code = to!ubyte(spec, 6) + 16;
That's not an integer literal... that's a runtime value of ubyte
plus an integer literal.
Since the ubyte is the result of a runtime function, the compiler
doesn't know what it will
They are promoted to int in arithmetic operations unless compiler
can prove the value doesn't exceed its range.
Adam D. Ruppe wrote:
> but yours won't because to!ubyte(spec, 6) might just be > 240.
Thanks for that explanation. That's clear now.
--
Shriramana Sharma, Penguin #395953