タイトルは私の質問をまとめたものです。以下のコードで説明されているように、テンプレート クラス メソッドへのポインターには汎用の typedef が必要です。typedef はジェネリックである必要があります。
template<typename TYPE>
struct MyClass {
const TYPE& get() const {}
};
// this is okay:
typedef void (MyClass<int>::*ParticleMethodPtr)( int );
// now I just need to typedef this so I can
// use the pointer on methods other than int
// using typedef, not okay:
template< TYPE >
typedef void (MyClass<TYPE>::*ParticleMethodPtr)( TYPE );