Будет ли компилятор С++ оптимизировать неиспользуемое возвращаемое значение? ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Будет ли компилятор С++ оптимизировать неиспользуемое возвращаемое значение?

Сообщение Anonymous »

Если у меня есть функция, которая возвращает объект, но это возвращаемое значение никогда не используется вызывающей стороной, оптимизирует ли компилятор копию? (Возможно, ответ «всегда/иногда/никогда»).

Элементарный пример:

Код: Выделить всё

ReturnValue MyClass::FunctionThatAltersMembersAndNeverFails()
{
//Do stuff to members of MyClass that never fails
return successfulResultObject;
}

void MyClass::DoWork()
{
// Do some stuff
FunctionThatAltersMembersAndNeverFails();
// Do more stuff
}
В этом случае будет ли вообще скопирован объект ReturnValue? Его вообще строят? (Я знаю, что это, вероятно, зависит от компилятора, но давайте сузим это обсуждение до популярных современных.)

РЕДАКТИРОВАТЬ: Давайте немного упростим это, поскольку здесь нет В общем случае, похоже, не существует консенсуса. Что, если ReturnValue является целым числом и мы возвращаем 0 вместо SuccessResultObject?

Подробнее здесь: https://stackoverflow.com/questions/272 ... turn-value

Вернуться в «C++»