C++ concepts: FunctionObject
From cppreference.com
                    
                                        
                    
                    
                                                            
                    A FunctionObject type is the type of an object that can be used on the left of the function call operator.
[edit] Requirements
The type T satisfies FunctionObject if
-  The type 
Tsatisfies std::is_object, and 
Given
-  
f, a value of typeTorconst T -  
args, suitable argument list, which may be empty 
The following expressions must be valid:
| Expression | Requirements | 
|---|---|
| f(args) | performs a function call | 
[edit] Notes
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.
[edit] Standard library
- All pointers to functions satisfy this requirement.