Прежде чем кто-то скачет и скажет Profile before optimize!
, это просто вопрос любопытства и вытекает из этого оригинального вопроса.
Если я возвращаюсь по ссылке на тот же объект, будет ли он оптимизирован, если не будет использоваться? Например, у меня есть Vector<>
, который имеет различные математические функции (предположим, что я не использую перегрузку оператора). Два способа написания:
inline void Vector::Add(const Vector& in) // Adds incoming vector to this vector
ИЛИ
inline Vector& Vector::Add(const Vector& in) // Adds incoming vector to this vector and returns a reference to this vector
Теперь, если Add()
используется без использования возвращаемого значения, компилятор просто отбросит возвращение вообще, и функция станет такой, как если бы у него не было возвращаемого значения для начала? И что, если это НЕ inlined
?