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>
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.