bind好像不能绑定一个多态函数
比如
test()
test(int)
无论绑定任何一个都有问题
下面的内容试过,但是没有效果:
绑定一个被重载的函数的企图通常对导致一个错误,因为无法表示到底要绑定哪一个重载版本。对于带有 const 和非 const 两个重载的成员函数来说,这是一个很常见的问题,就像这个简化的示例:
struct X { int& get(); int const& get() const; }; int main() { boost::bind( &X::get, _1 ); }
这里的二义性可以通过将(成员)函数指针强制转换到想要的类型来解决:
int main() { boost::bind( static_cast< int const& (X::*) () const >( &X::get ), _1 ); }
另一个或许更可读的办法是引入一个临时变量:
int main() { int const& (X::*get) () const = &X::get; boost::bind( get, _1 ); }