Если следующее из С++ FAQ Lite истинно: "имя функции распадается на указатель на функцию" (поскольку имя массива распадается на указатель на его первый элемент); почему мы должны включить амперсанд?
typedef int (Fred::*FredMemFn)(char x, float y);
FredMemFn p = &Fred::f;
И не только:
typedef int (Fred::*FredMemFn)(char x, float y);
FredMemFn p = Fred::f;
Во втором случае Fred:: f является функцией и может распадаться на указатель на эту функцию.
Надеюсь, этот вопрос не такой глупый.