I was looking at an example implementation of binder1st
, that looks like this:
template <class Operation, class T>
binder1st<Operation> bind1st (const Operation& op, const T& x)
{
return binder1st<Operation>(op, typename Operation::first_argument_type(x));
}
What is the meaning of typename Operation::first_argument_type(x)
. I understand first_argument_type
to be a typename, but belonging to the binary_function
base class. It looks to me that it is a function belonging to namespace Operation
- in which case, why is typename
used here?