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 ); }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步