где спека то что надо так делать ?
Дело в том, что в общем случае у тебя может быть несколько одинаково общих типов в разных ветках тернарного оператора (например, общий базовый класс и общий базовый интерфейс). Поэтому компилятор действительно в общем случае не может этого угадать.