Iterator Example template OI copy(II begin, II end, OI out) { for (; begin != end; ++out, ++begin) *out = *begin; return out; }