すまん。元の122のコードのmem_fn_tのmem_fn_t mf = ptd->second;の行は
UINT (T::*mf)() = ptd->second;が正しい。
改行制限でtypedefをやめたのに直すのを忘れていたみたいだ。

そしたらVC++2005でも通る。