bind 的使用缺陷
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 );
}
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号