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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.