Stavo giocando a ardo con std :: function e std :: bind e ho notato qualcosa di non intuitivo e mi piacerebbe capirlo meglio.Informazioni su std :: function e std :: bind
Ad esempio:
void fun()
{
}
void hun(std::string)
{
}
int main()
{
function<void(int)> g = &fun; //This fails as it should in my understanding.
function<void(int)> f = std::bind(fun); //This works for reasons unknown to me
function<void(int, std::string)> h = std::bind(hun); //this doesn't work
return 0;
}
Come è possibile associare un function<void(int)>
ad una funzione che è void(). Potrei quindi chiamare f (1) e divertirmi(). Mi piacerebbe capire come è fatto. Entrare nell'implementazione di Microsoft Visual Studio 2012 mi ha fatto perdere in un mare di macro illeggibili. ecco perché chiedo questa domanda qui.
Sto usando l'edizione Express vs2012. – Alex
puoi consigliare un sito simile? – Alex
Compila con _clang_ e _g ++ _ entrambi. +1, situazione interessante. – soon