[code]
import std.stdio;

public void setMarker(M)( size_t markerIndex, M markerValue )
        if(
                is(M: ulong) || is(M: long) ||
                is(M: uint) || is(M: int) ||
                is(M: ushort) || is(M: short) ||
                is(M: ubyte) || is(M: byte) || is(M: char) || is(bool) ||
                is(M: double) ||
                is(M: float)
        )
{
        static if( is(M: ulong) || is(M: long) ){
                std.stdio.writeln("Here 1: ", typeid(M));
        }

        else static if( is(M: uint) || is(M: int) ){
                std.stdio.writeln("Here 2: ", typeid(M));
        }

        else static if( is(M: ushort) || is(M: short) ){
                std.stdio.writeln("Here 3: ", typeid(M));
        }

else static if( is(M: ubyte) || is(M: byte) || is(M: char) || is(bool) ){
                std.stdio.writeln("Here 4: ", typeid(M));
        }
}

void main() {
        setMarker( 0, cast(ubyte)5 );
}

[/code]



Result:
Here 1: ubyte


Compiler and OS:
DMD 2.067.1  on Ubuntu 14.04 64-bit


Expected:
Here 4: ubyte


is(my expectation) wrong?

Reply via email to