Re[2]: Тупость компилятора или ограничения стандарта?
От: programmater  
Дата: 01.09.10 14:05
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>Здравствуйте, programmater, Вы писали:


СМ>напиши так:


СМ>
СМ>  bool GetDrawPoints() const
СМ>    {return m_Mask.bShowPoints && m_Values.bShowPointIcons;}

СМ>


Именно! Этот ответ я нашел сам в процессе эксперимента (уже после того, как отослал вопрос).
Более, если для доступа к отдельному флагу писать не
inline bool GetSomeFlag() const {return m_Flags.bSomeFlag;}

которое работает неэффективно, а
inline bool GetSomeFlag() const 
{
  if(m_Flags.bSomeFlag) {return true;}
  else return false;
}

то сгенерированный код будет более эффективным. Воистину пути компилятора неисповедимы , и иногда более страшно выглядящий фрагмент программы на С++ разворачивается в более эффективный код.
Всем спасибо.
ЗЫ. набор инструкций тут не при чем. Иначе бы он и при развороте тела функции непосредственно в оператор условия тоже генерировал бы неэффективный код. Компилятор — 2005 студия (которая по моему меньше чем для пентиума и генерировать не умеет).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.