2 [section:function_output Function Output Iterator]
4 The function output iterator adaptor makes it easier to create custom
5 output iterators. The adaptor takes a unary function and creates a
6 model of Output Iterator. Each item assigned to the output iterator is
7 passed as an argument to the unary function. The motivation for this
8 iterator is that creating a conforming output iterator is non-trivial,
9 particularly because the proper implementation usually requires a
14 struct string_appender
16 string_appender(std::string& s)
20 void operator()(const std::string& x) const
28 int main(int, char*[])
30 std::vector<std::string> x;
37 std::copy(x.begin(), x.end(),
38 boost::make_function_output_iterator(string_appender(s)));
40 std::cout << s << std::endl;
49 template <class UnaryFunction>
50 class function_output_iterator {
52 typedef std::output_iterator_tag iterator_category;
53 typedef void value_type;
54 typedef void difference_type;
56 typedef void reference;
58 explicit function_output_iterator();
60 explicit function_output_iterator(const UnaryFunction& f);
62 /* see below */ operator*();
63 function_output_iterator& operator++();
64 function_output_iterator& operator++(int);
66 UnaryFunction m_f; // exposition only
71 `UnaryFunction` must be Assignable and Copy Constructible.
75 `function_output_iterator` is a model of the Writable and
76 Incrementable Iterator concepts.
80 explicit function_output_iterator(const UnaryFunction& f = UnaryFunction());
82 [*Effects: ] Constructs an instance of `function_output_iterator`
83 with `m_f` constructed from `f`.
85 unspecified_type operator*();
87 [*Returns: ] An object `r` of unspecified type such that `r = t`
88 is equivalent to `m_f(t)` for all `t`.
91 function_output_iterator& operator++();
96 function_output_iterator& operator++(int);