下記のコードが VC9 と VC10 で C2664 になりますが、GCC4 では問題ありません。
const なメンバ関数の型を正しく推測できていないようです。

何か規格外の事をしているのか、それとも単なる VC のバグなのでしょうか?

struct Foo{
  void test1(){ cout << "test1" << endl; }
  void test2() const{ cout << "test2" << endl; }
};

template<typename F>
void test( Foo* foo, F Foo::*func ){
  ( foo->*func )();
}

Foo foo;
test( &foo, &Foo::test1 );
test( &foo, &Foo::test2 ); // C2664