我在c ++中得到错误未解决的重载函数类型

时间:2012-07-03 06:43:57

标签: c++ boost

为什么这段代码会像这样:

boost::bind (SomeFunc<float>, function arguments go here);

产生此错误:

no matching function for call to bind(<unresolved overloaded function type>

感谢

2 个答案:

答案 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);
}

有时“未解决的重载函数类型”可能意味着“没有任何重载是可行的”,在这种情况下,您需要弄清楚为什么它不能使用任何并修复它。