Для std :: min / std :: max гарантируется только одна оценка - PullRequest
3 голосов
/ 08 сентября 2010

Гарантирует ли стандарт C ++, что вызов

c = std::min(f(x), g(x));

оценивает функции f и g только один раз?

1 Ответ

12 голосов
/ 08 сентября 2010

Да.Поскольку std :: min является функцией, f (x) и g (x) будут оцениваться только один раз.И возвращенные значения не будут скопированы.См. Прототип функции:

template<typename T>     
const T& min ( const T& a, const T& b );

Это явная разница с минимально определенным препроцессором макросом:

#define MIN(A,B) ((A)<(B))?(A):(B)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...