Будет легче понять, когда вы начнете думать так:
Всякий раз, когда вы видите такую функцию:
TYPE foo(int arg1, int arg2);
Вы говорите, что тип foo - ТИП. Итак, тип
int get_next_prime();
это int.
Вы можете видеть это, когда передаете указатель на функцию в качестве аргумента функции:
void register_callback(void (*ptr)(int));
В этом случае вы передаете функцию типа void в качестве аргумента.
Теперь, когда вы видите что-то подобное:
typedef int (A::*typedefName)(int);
вы просто говорите, что переменная (A :: * typedefName) (int) (это только одно, а не два, поскольку это объявление указателя функции) на самом деле имеет тип int. С этого момента компилятор будет интерпретировать A :: * typedefName как функцию типа int, то есть он возвращает значение int.
Надеюсь, это сделает его менее запутанным.