Каков тип выражения тернарного оператора в C++?

При задании выражения вида

a ? b : c

каков его тип? Могут ли типы b и c различаться, а выражение по-прежнему допустимо? Если да, то каковы правила относительно типа выражения. Какие правила существуют для rvalue- и lvalue-ness?


person Ralph Tandetzky    schedule 20.03.2015    source источник
comment
Я не знаю, верно ли это в целом, но у Microsoft есть статья MSDN подробное описание правил   -  person Guvante    schedule 21.03.2015
comment
Объем вопроса stackoverflow.com/questions /8535226/ намного уже моей. Несмотря на то, что это хорошая ссылка, ответы там не полностью отвечают на мой вопрос.   -  person Ralph Tandetzky    schedule 21.03.2015
comment
Ответы действительно полностью отвечают на ваш вопрос. Приведены несколько ярдов стандарта.   -  person user207421    schedule 21.03.2015
comment
@EJP Ни у одного из них нет цитаты из стандарта С++ 11. Котировки в ярдах взяты из N1905, рабочего проекта 2005 года. Тем не менее, [expr.cond] занимает 1,5 страницы, поэтому я не очень-то склонен цитировать его снова...   -  person T.C.    schedule 21.03.2015
comment
@Т.С. Изменилось ли это в С++ 11?   -  person user207421    schedule 21.03.2015
comment
@EJP Да, этот раздел изменился за последние 10 лет.   -  person T.C.    schedule 21.03.2015