`CondExp`s are also used as the store of the expressions. It's necessary to store all information during IFTI. For example:

```d
void foo(T)(T[] a1, T[] a2) {}
void main()
{
    short[] arr;
    foo([1,1,1,1,1], arr);   // should work (T == short, and all of `1`s are implicitly convertible to short)
    foo([1,1,1,1,65536], arr);   // should not work, because `65536` is not implicitly convertible to short
    foo([65536,1,1,1,1], arr);   // ditto
}
```