Сможет ли компилятор C ++ оптимизировать неиспользуемое возвращаемое значение по `ссылке`?

Прежде чем кто-то прыгнет и скажет Профиль перед оптимизацией! , это просто вопрос из любопытства и проистекает из этого исходного вопроса .

Если я возвращаю по ссылке тот же объект, будет ли он оптимизирован, если не используется? Например, у меня есть 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 () используется без использования возвращаемого значения, компилятор просто отбросит возвращаемый результат, и функция станет такой, как если бы у нее нет возвращаемое значение для начала? А что, если это НЕ встроенный ?

10
задан Community 23 May 2017 в 11:58
поделиться