LINUX.ORG.RU
при полной оптимизации - вполне вероятно, но как по мне лучше таки руками прописать:

int F(const SomeLargeType& x)
{
int n;
// ...
return n;
}

SomeLargeType a;
SomeLargeType b;
SomeLargeType c = a + b;

F(a);
F(c);
lester ★★★★
()
const SomeLargeType x это оксюморон Используй const SomeLargeType & x в любом случае. Для a+b тоже все корректно будет.
Reset ★★★★★
()
Ответ на: комментарий от ip1981
> Странно, вроде был случай, что компилятор ругался

msvc выдал варнинг, что это нестандартное расширение и что лучше так не делать - но таки скомпилил
lester ★★★★
()
неопытные плюсоиды -- такие плюсоиды... 

Сделай так:

int F(const SomeLargeType& x)

И радуйся жизни и лету! gcc это схавает и нормальное поймет (именно при обьявлении константной рефы), -- во втором случае в функцию будет передаватся const ref на временный обьект -- результат операции сложения a+b, после возврата из функции, будет удален и временный обьект. 
vnovouhov
()
Ответ на: комментарий от vnovouhov
вообще-то это по стандарту, поэтому должен схавать любой нормальный компайлер, а не только gcc
Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.