Рассмотрим следующее:
inline unsigned int f1(const unsigned int i, const bool b) {return b ? i : 0;}
inline unsigned int f2(const unsigned int i, const bool b) {return b*i;}
Синтаксис f2
более компактен, но выполняют ли стандартные гарантии, что f1
и f2
являются строго эквивалентными?
Кроме того, если я хочу, чтобы компилятор оптимизировал это выражение, если b
и i
известны во время компиляции, какую версию я должен предпочесть?