When the Function Signature Matches the Functor Invocation
The callee selects one of its functions, which it uses to build a functor of type RWTFunctor<double(char)>. The simplest case is a function that matches the functor invocation, like this:
 
double function1 (char c);
In this case, the functor contains only a function pointer. The functor just passes the argument from the caller to the function and passes the return value from the function to the caller. The process looks something like Figure 46.
Figure 46 – Invoking a functor
The caller calls the functor with this char argument:
 
functor1('y');
When the caller passes argument values directly to the functor like this, the arguments are called caller data. The functor, in turn, passes the value on when it invokes the function:
 
function1('y');
The function sends its return value back to the functor, which in turn passes it to the caller.