Conditional statements accept any type except void, but that has nothing to do with common type. If I removed the boolean version, then they following example would not work:
```D
if("x".to!int().ifThrown(false)){
   assert(false);
}
```
`"x".to!int()` returns an integer value, and `false` is a boolean value. `CommonType!(int,bool)` is `void`, but `if` does not accept `void` for it's condition. `if` would accept an integer and it would accept a boolean - but it would not accept their common type. That's why I must explicitly booleanize it.

As for the ternary operator: most types are not implicitly converted to `bool`, but can be used as conditions. The boolean version returns `bool`, so using a condition is required here.