> "x".to!int() returns an integer value, and false is a boolean value. CommonType!(int,bool) is void

But `CommonType!(int,bool)` is actually `int`.

> As for the ternary operator: most types are not implicitly converted to bool

`if` is allowed to implicitly make an explicit cast to bool. In this case, `ifThrown` would actually return an int, and the `if` would cast said int to boolean.

If you take my above code, then this works perfectly fine:

```D
    if ( !5.ifThrown(false) )
        assert(0);
```

Added argument to boot is this:

```D
int a = "5".to!int().ifThrown(false);
```

With your code, `a` would have the value `1`. It should have the value `5`.

Long story short, I see no need to special case bool. At best, it is useless, at worst, it is bug prone.