puntero a const contra puntero habitual (para funciones)

¿Hay alguna diferencia entre el puntero a la constante y el puntero habitual para las funciones? ¿Cuándo es adecuado utilizar const calificador para funciones independientes?

Escribí una muestra corta para ilustrar mi pregunta:

#include <iostream>
using namespace std;

int sum( int x, int y ) { return x + y; }
typedef int sum_func( int, int );

int main()
{
    const sum_func* sum_func_cptr = &sum; // const function
    sum_func* sum_func_ptr = &sum;        // non-const function ?

    // What is the difference between sum_func_cptr and sum_func_ptr

    int x = sum_func_cptr( 2, 2 );
    cout << x << endl;

    int y = sum_func_ptr( 2, 2 );
    cout << y << endl;

    sum_func_cptr = 0;
    sum_func_ptr = 0;

    return 0;
}

g ++ no da advertencias. Por eso pregunto.

Respuestas a la pregunta(5)

Su respuesta a la pregunta