Pourquoi un morceau de code comme ceci:
boost::bind (SomeFunc, function arguments go here);
produire cette erreur:
no matching function for call to bind(
Merci
Il se peut que votre fonction SomeFunc
soit surchargée, auquel cas boost::bind
ne peut pas gérer cela. Vous devez implémenter une solution manuelle, voir ici pour plus de détails:
Vous devez utiliser un static_cast
pour indiquer au compilateur quelle surcharge choisir si elle est ambiguë, par exemple:
#include void foo(int) {} void foo(double) {} int main() { boost::bind(static_cast(&foo), _1); }
Parfois, “type de fonction surchargée non résolue” peut signifier “aucune des surcharges n’est viable”, auquel cas vous devez comprendre pourquoi il ne peut en utiliser aucune et résoudre ce problème.