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: 
If you implement `operator()` for a class `C`, then if `c` is an object of type `C` you can write `c()`, which invokes `c.operator()()`. You can have as many parameters to `operator()` as you like.

For one good example of when `operator()` is useful, see here:

<http://www.parashift.com/c++-faq-lite/operator-overloading.html#faq-13.10>
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.