#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);
}
Quando eseguito, esso stampa, "Yo: ornitorinco." Sembra ignorare completamente i parametri extra. Mi aspetterei di ottenere un errore di compilazione. Ho accidentalmente introdotto un bug nel mio codice in questo modo.Perché è possibile chiamare una funzione BoostBind con parametri aggiuntivi?
Mi piacerebbe ancora conoscere il ragionamento sul perché consentire questo comportamento se qualcuno lo scopre :) –
@Joseph: Probabilmente troppo complesso per impedirlo esplicitamente. –