Thread overview
Not getting expected behavior from compile-time conditional
Jan 27, 2016
pineapple
Jan 27, 2016
Ali Çehreli
Jan 27, 2016
pineapple
January 27, 2016
Here's a simple programming showing where I'm tripping up -

void test(T)(in T value){
    import std.traits;
    static if(is(T == char)){
        writeln("char");
    }else static if(is(isNumeric!(T))){
        writeln("number");
    }
    writeln("hi");
}

public void main(){
    test('g');
    test(2);
    test(2.0);
}

Output is this -

char
hi
hi
hi

I was expecting output to look like this -

char
hi
number
hi
number
hi

How can I fix this?
January 26, 2016
On 01/26/2016 04:12 PM, pineapple wrote:
> Here's a simple programming showing where I'm tripping up -
>
> void test(T)(in T value){
>      import std.traits;
>      static if(is(T == char)){
>          writeln("char");
>      }else static if(is(isNumeric!(T))){

Remove the extra is: :)

    }else static if(isNumeric!(T)){

Ali

January 27, 2016
On Wednesday, 27 January 2016 at 00:17:18 UTC, Ali Çehreli wrote:
> Remove the extra is: :)

Huh, I swear I tried that. Thanks!