#include <iostream>
#include <functional>
#include <boost/function.hpp>

struct SomeObject{
 void Do(int) { std::cout << "hogehoge" << std::endl; }
};

int main(){
 SomeObject t;
 boost::function<void (int)> g = std::bind1st( std::mem_fun(&SomeObject::Do), &t );
 g(0);
 return 0;
}

だとコンパイル通って、

struct SomeObject{
 void Do(void/* ここと */) { std::cout << "hogehoge" << std::endl; }
};

int main(){
 SomeObject t;
 boost::function<void (void/* ここと */)> g = std::bind1st( std::mem_fun(&SomeObject::Do), &t );
 g();/* ここを変更 */
 return 0;
}

だと通らなくなるんだけど…理由わかる人がいたら教えてもらえませんか?
環境はVC2005Express + boost 1.33.1です。