2

なぜこのようなコードが必要になるのでしょうか。

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

このエラーを生成します:

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

ありがとう

4

2 に答える 2

9

関数SomeFunc<float>がオーバーロードされている可能性があり、その場合boost::bindはこれに対処できません。手動のソリューションを実装する必要があります。詳細については、こちらを参照してください。

于 2012-07-03T06:47:10.753 に答える
3

static_castを使用して、あいまいな場合に選択するオーバーロードをコンパイラに指示する必要があります。例:

#include <boost/bind.hpp>

void foo(int) {}
void foo(double) {}

int main() {
  boost::bind(static_cast<void(*)(int)>(&foo), _1);
}

「未解決のオーバーロードされた関数型」は、「どのオーバーロードも実行可能ではない」ことを意味する場合があります。その場合、何も使用できない理由を理解して修正する必要があります。

于 2012-07-03T06:52:35.743 に答える