[section:function_output Function Output Iterator] The function output iterator adaptor makes it easier to create custom output iterators. The adaptor takes a unary function and creates a model of Output Iterator. Each item assigned to the output iterator is passed as an argument to the unary function. The motivation for this iterator is that creating a conforming output iterator is non-trivial, particularly because the proper implementation usually requires a proxy object. [h2 Example] struct string_appender { string_appender(std::string& s) : m_str(&s) {} void operator()(const std::string& x) const { *m_str += x; } std::string* m_str; }; int main(int, char*[]) { std::vector x; x.push_back("hello"); x.push_back(" "); x.push_back("world"); x.push_back("!"); std::string s = ""; std::copy(x.begin(), x.end(), boost::make_function_output_iterator(string_appender(s))); std::cout << s << std::endl; return 0; } [h2 Reference] [h3 Synopsis] 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 }; [h3 Requirements] `UnaryFunction` must be Assignable and Copy Constructible. [h3 Concepts] `function_output_iterator` is a model of the Writable and Incrementable Iterator concepts. [h3 Operations] explicit function_output_iterator(const UnaryFunction& f = UnaryFunction()); [*Effects: ] Constructs an instance of `function_output_iterator` with `m_f` constructed from `f`. unspecified_type 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`. [endsect]