A FunctionObject type is the type of an object that can be used on the left of the function call operator.
Requirements
The type T satisfies FunctionObject if.
The type T satisfies std::is_object, and
Given.
f, a value of type T or const T args, suitable argument list, which may be empty
The following expressions must be valid:
Expression Requirements f(args) performs a function call
Notes
Functions and references to functions are not function object types, but can be used