Скажем, у меня есть кусок кода, как это:Выполняет ли вычисление в аргументе std :: min() вычислительные накладные расходы?
int y = 1;
int z = 1;
int x = std::min(y+1,z);
Глядя на документацию std::min
(here), мне было интересно, создает ли добавление в первом аргументе функции накладные расходы вычисления, то есть ли y+1
является возможно, выполняется дважды.
Причина моего вопроса в том, что документация показывает это в качестве возможной реализации std::min
:
template<class T>
const T& min(const T& a, const T& b)
{
return (b < a) ? b : a;
}
Так кто-нибудь знает, является ли y+1
выполняется в два раза?
«Документация» показывает, что два выражения оцениваются только один раз. –
* «возможно ли, что y + 1 выполняется дважды» *. Как это возможно, если 'min' является функцией, а не макросом? Кажется, вы спрашиваете об этом, потому что вы видели * «выполнено дважды» * в случае макроса, хотя и не понимаете причину * почему * это происходит. Потому что, если вы это хорошо понимаете, вероятно, вы бы не задали этот вопрос. Если это так, то я бы посоветовал вам сначала * понять макрос. – Nawaz
[Окончательный список книг на С ++] (http://stackoverflow.com/a/388282/2069064) – Barry