QUOTE (DASM @ Oct 8 2013, 12:38)

Я думаю тут вопрос не в приоритете, а в том, что С++ трактует это не как присваивание, а как начальныю инициализацию, что-то в этом роде
Почему? В С приоритеты разные, поэтому выражение рассматривается как ((test==1) ? a = 1 : b ) = 2; что абсурдно.
В С++ приоритет одинаковый и для этого приоритета подвыражения группируются справа налево, т.е. получается (test==1) ? a = 1 : (b = 2);