operator() должна быть нестатической функцией-членом с произвольным числом параметров. У него могут быть аргументы по умолчанию. Он реализует синтаксис вызова функции
postfix-expression ( expression-listopt )
где postfix-expression оценивается как объект класса, а возможно пустое значение expression-list соответствует списку параметров operator() функции-члена класса. Таким образом, вызов x(arg1,...) интерпретируется как x.operator()(arg1, ...) объект класса x типа, T если он T::operator()(T1, T2, T3) существует, и если оператор выбран как функция наилучшего соответствия механизмом разрешения перегрузки ([over.match.best]).