Компиляторы оптимизируют вызовы тривиальных функций с помощью указателей?

Допустим, у меня есть функция, которая принимает указатель на функцию:

int funct(double (*f)(double));

И я передаю ей функцию, которая на самом деле ничего не делает:

double g(double a) { return 1.0;}
//...
funct(g);

Будет ли компилятор оптимизировать вызовы к g ? Или это все еще будет иметь накладные расходы? Если есть накладные расходы, сколько? Достаточно ли перегрузить функцию, чтобы получать как указатели на функции, так и постоянные значения?

17
задан Rob Kennedy 7 June 2011 в 01:54
поделиться