| 
|   | Function () | 
|   | Empty constructor (implementation will become null)  More...
  | 
|   | 
|   | Function (FunctionImpl< R, A, B, C > *impl) | 
|   | Constructor with given Impl.  More...
  | 
|   | 
|   | Function (icl::utils::SmartPtr< FunctionImpl< R, A, B, C > >impl) | 
|   | Constructor with given SmartPtr<Impl>  More...
  | 
|   | 
|   | Function (R(*global_function)(A, B, C)) | 
|   | Constructor from given global function (for implicit conversion)  More...
  | 
|   | 
| R  | operator() (A a, B b, C c) const | 
|   | function operator (always const)  More...
  | 
|   | 
|   | operator bool () const | 
|   | checks wheter the implemnetation is not null  More...
  | 
|   | 
|   | operator Function< R, A, B, C > () const | 
|   | 
template<class R = void, class A = NO_ARG, class B = NO_ARG, class C = NO_ARG>
struct icl::utils::Function< R, A, B, C >
The General Function Template. 
The Function class can be used as a generic functor that can have one of these backends:
- A global function call
 
- A member function call
 
- A call to an objects function operator (i.e. it wrapps a functor)
 
- An arbitrary implementation by wrapping a custom implementation of FunctionImpl<R,A,B>
 
This class should not be used directly! Use the overloaded icl::utils::function - template instead. Functions can be copied as objects. Internally, a SmartPointer is used to manage the actual function implementation.
The Function class template is specialized for functions with less than two parameters. In this case the Function's function-operator() also has less parameters.
- See also
 - FUNCTION_SECTION 
 
 
template<class R = void, class A = NO_ARG, class B = NO_ARG, class C = NO_ARG> 
 
Constructor from given global function (for implicit conversion) 
This constructor can be used for implicit conversion. Where a Function<R,A,B> is expected, you can simply pass a global function of type R(*function)(A,B)