Description

Class template function is a thin
wrapper around the numbered class templates function0, function1, etc. It accepts a
function type with N arguments and will will derive from
functionN instantiated with the arguments
it receives.

The semantics of all operations in class template
function are equivalent to that of the
underlying functionN object, although
additional member functions are required to allow proper copy
construction and copy assignment of function objects.

The safe_bool conversion
opens a loophole whereby two function
instances can be compared via ==, although this
is not feasible to implement. The undefined void
operator== closes the loophole and ensures a
compile-time or link-time error.

The safe_bool conversion
opens a loophole whereby two function
instances can be compared via !=, although this
is not feasible to implement. The undefined void
operator!= closes the loophole and ensures a
compile-time or link-time error.