Definitions

Valid expressions

Expression semantics

Complexity guarantees

Invariants

Models

Notes

[1]
Note the implication of this: a function pointer T (*f)(X)
is a Unary Function, but not an Adaptable Unary Function: the
expressions f::argument_type and f::result_type are nonsensical.

[2]
When you define a class that is a model of Adaptable Unary Function,
you must provide these typedefs. The easiest way to do this is to
derive the class from the base class unary_function. This is an
empty class, with no member functions or member variables; the only
reason it exists is to make defining Adaptable Unary Functions
more convenient. Unary_function is very similar to the base classes used by
the iterator tag functions.