Boost logo

Boost Users :

Subject: Re: [Boost-users] iterators must go
From: Scott McMurray ([hidden])
Date: 2009-05-16 01:45:37

On Fri, May 15, 2009 at 17:15, Daniel James <daniel_james_at_[hidden]> wrote:
> The relevant point is that bringToFront's first range can step over
> the second range.

I'm very curious how that's supposed to work. What if, for example,
the second range is a superset of the first? Or, since they can be
two different types, what happens if I do the same thing as the above,
but "retro" one or both of the ranges? It just sounds brittle to me.

Or, even simpler, how do I do this?

size_t strnlen(char *p, size_t n) {
    return find(p, p+n, '\0') - p;

That's the size of a range, but I don't know how to get that range.

Perhaps it really means that find should be a certain kind of split,
not a reducer:

size_t strnlen(char *p, size_t n) {
    auto rr = find( make_range(p, n), '\0' );
    return rr.first.size();

But then what if I want the range before the k-th occurance of
something? Then I'd have to somehow concat all the front ranges,
which would give me who knows what type.

It feels like n iterators gives you n*n different ranges, but that
there's no obvious way to get them from n ranges.

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at