::

  template <class UnaryFunction>
  class function_output_iterator {
  public:
    typedef std::output_iterator_tag iterator_category;
    typedef void                     value_type;
    typedef void                     difference_type;
    typedef void                     pointer;
    typedef void                     reference;

    explicit function_output_iterator();

    explicit function_output_iterator(const UnaryFunction& f);

    /* see below */ operator*();
    function_output_iterator& operator++();
    function_output_iterator& operator++(int);
  private:
    UnaryFunction m_f;     // exposition only
  };



``function_output_iterator`` requirements
.........................................

``UnaryFunction`` must be Assignable and Copy Constructible.  



``function_output_iterator`` models
...................................

``function_output_iterator`` is a model of the Writable and
Incrementable Iterator concepts.



``function_output_iterator`` operations
.......................................

``explicit function_output_iterator(const UnaryFunction& f = UnaryFunction());``

:Effects: Constructs an instance of ``function_output_iterator`` 
  with ``m_f`` constructed from ``f``.


``operator*();``

:Returns: An object ``r`` of unspecified type such that ``r = t``
  is equivalent to ``m_f(t)`` for all ``t``.
  

``function_output_iterator& operator++();``

:Returns: ``*this``


``function_output_iterator& operator++(int);``

:Returns: ``*this``
