I believe what you're asking about is called a function pointer. They're nifty little things that all you to store a function that you want to call into a variable, and call that function later on. There is also plenty of other uses for them, but they're fun regardless.
> to a function of its own type
that confuses me, and couldn't write the infinite recursive function prototype.
So decided to return an object instead.
However, I don't see the use case.
You've got a `select function' to select `select functions' ¿when will you do anything?
I could be wrong, but I believe the OP wanted to create a function that returned something that allowed other functions to be called. I don't know, these new members and not explaining themselves clearly confuses everyone.