Los compiladores optimizan las llamadas a funciones triviales realizadas a través de punteros?

Di que tengo una función que toma un puntero de función:

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

Y le paso una función que en realidad no hace nada:

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

¿El compilador optimizará las llamadas ag? ¿O esto todavía tendrá gastos generales? Si tiene gastos generales, ¿cuánto? ¿Suficiente como para sobrecargar la función para recibir tanto punteros de función como valores constantes?

Respuestas a la pregunta(3)

Su respuesta a la pregunta