Consider the code:
void f(int) {}
int main()
{
std::function<void(int)>func = f;
func(3);
std::function<void(int)>funcc = &f;
funcc(3);
void(*ptr)(int) = f;
ptr(3);
void(*ptrr)(int) = &f;
ptrr(3);
}
This code compiles successfully and it seems to me like all the calls of f
are the same. In the first part function is being made a functor with wrapping in std::function
and in the second part I'm using pointers to function.
My main question is: what is the difference between writing = f;
and = &f;
? Moreover, what is &f
? Is it an address of f
? Or a reference to f
? I'll highly appreciate any explanations!