Noções básicas sobre std :: function e std :: bind
Eu estava jogando com std :: function e std :: bind e notei algo não intuitivo e gostaria de entender melhor.
Por exemplo:
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;
}
Como é possível ligar umfunction<void(int)>
para uma função que évazio(). Eu poderia chamar f (1) e me divertir (). Eu gostaria de entender como isso é feito. Indo para dentro da implementação do Microsoft Visual Studio 2012 isso me deixou perdido em um mar de macros ilegíveis. então é por isso que faço esta pergunta aqui.