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