为什么这段代码会像这样:
boost::bind (SomeFunc<float>, function arguments go here);
产生此错误:
no matching function for call to bind(<unresolved overloaded function type>
感谢
答案 0 :(得分:8)
可能是您的函数SomeFunc<float>
被重载,在这种情况下boost::bind
无法解决此问题。您必须实施手动解决方案,有关详细信息,请参阅here:
答案 1 :(得分:2)
你需要使用static_cast
告诉编译器选择哪个重载是否含糊不清,例如:
#include <boost/bind.hpp>
void foo(int) {}
void foo(double) {}
int main() {
boost::bind(static_cast<void(*)(int)>(&foo), _1);
}
有时“未解决的重载函数类型”可能意味着“没有任何重载是可行的”,在这种情况下,您需要弄清楚为什么它不能使用任何并修复它。