Weird integral promotion issue (?)
    Dmitry Olshansky 
    dmitry.olsh at gmail.com
       
    Sat May 12 14:21:31 PDT 2012
    
    
  
On 13.05.2012 1:08, Alex Rønne Petersen wrote:
> Hi,
>
> alexrp at alexrp ~/Projects/tests $ dmd test.d
> test.d(9): Error: cannot implicitly convert expression (240) of type int
> to byte
> alexrp at alexrp ~/Projects/tests $ cat test.d
> import std.stdio, std.traits;
>
> void foo(T)(T val) if (isIntegral!T)
> {
> }
>
> void main()
> {
> foo!byte(0b11110000);
> }
>
> Why? I explicitly told the compiler that T == byte. Passing 0b00001111
> works perfectly fine.
>
byte is in range of -128..127
use ubyte
Gotcha!
-- 
Dmitry Olshansky
    
    
More information about the Digitalmars-d-learn
mailing list