Question: What is the meaning of operator() in C++? I see that is often used for "functors," or function objects such as comparators. But then how are such functions called? Is it useful in other situations? And how many parameters can I declare for such an operator? E.g., is the following acceptable?

```
bool operator() (Foo f, Baz b, Quz q, Oik o) {...}

```

Answer: 
Like any overloaded operator, `operator()` is a strange-looking name of a function. It must be a member function of a class or struct, but there are no restrictions on its arguments other than the usual rules for all functions.

To evaluate the expression `x(`*args*`)` when the type of `x` is a class type, C++ will attempt to call `x.operator()(`*args*`)`, where *args* can be the empty string or any number of function arguments.
It's just a normal function that gets called when you apply function-call syntax to a user-defined type.

So it has all the restrictions and features of a regular member function. It can be a template, it can take as many parameters as you want, it needs a return type, it can be `const`, etc.