From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2006-08-31 17:43:03
Pavol Droba wrote:
> There are reasons for it.
> One of them is the posibility to store result in reference-like container.
> vector<iterator_range<string::iterator> > tokens;
> split(tokens, input, token_comress_off);
> This way you can have a split without copying overhead. I consider
> this functionality interesting enough to make the interface to be
> like it is now.
No overhead is good, but there might be a different way to achieve it:
split( tokens, make_iterator_range(input), ... );
We could even get away with changing split(), but letting
make_iterator_range() return a const iterator_range<T> (Erics
suggestion). But OTOT, that would disallow a call to mutable functions
afterwards. We could also add make_const_iterator_range().
Anyway, I do think the current behavior can be suprising at first and
that those who want efficiency should do the extra work (at least in C++03).
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk