:: template 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``