FunctionObject type is the type of an object that can be used on the left of the function call operator.
f, a value of type
args, suitable argument list, which may be empty
The following expressions must be valid:
|| performs a function call
Functions and references to functions are not function object types, but can be used where function object types are expected due to function-to-pointer implicit conversion.