#include <iostream>
#include <string>
#include <boost/bind.hpp>
void foo(std::string const& dummy)
{
std::cout << "Yo: " << dummy << std::endl;
}
int main()
{
int* test;
std::string bar("platypus");
(boost::bind(&foo, bar))(test, test, test, test, test, test, test, test);
}
Wenn es ausgeführt wird, wird "Yo: platypus" ausgedruckt. Es scheint, zusätzliche Parameter vollständig zu ignorieren. Ich würde erwarten, einen Kompilierfehler zu bekommen. Ich habe auf diese Weise versehentlich einen Fehler in meinen Code eingefügt.Warum kann eine Boost.Bind-Funktion mit zusätzlichen Parametern aufgerufen werden?
Ich würde immer noch gerne die Gründe dafür, warum dieses Verhalten zu erlauben, wenn jemand es erfährt :) –
@Joseph: Wahrscheinlich einfach zu komplex, um es ausdrücklich zu verbieten. –