Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2005-08-04 19:58:06

"Stephen Gross" <sgross_at_[hidden]> writes:

> Let's say I've got some mpl::vector. If I grab a begin iterator on it, and
> increment that iterator past the elements in the vector, what happens? For
> instance:
> ==================================================
> using boost;
> typedef mpl::vector<int, char> t;
> typedef mpl::begin<t>::type element0; // Should deref to 'int'
> typedef mpl::next<element0>::type element1; // Should deref to 'char'
> typedef mpl::next<element1>::type element2; // What happens?

Undefined behavior. If you're lucky, a compilation error.

> typedef mpl::next<element2>::type element3; // "
> typedef mpl::next<element3>::type element4; // "
> ==================================================
> Will boost let me iterate past the 'end' of an mpl::vector?

There are no guarantees in that regard.

> Am I supposed to take care of bounds checking?

If bounds need to be checked, you're supposed to take care of it. I
can't say as I've ever had to do bounds checking in MPL code, though.


Dave Abrahams
Boost Consulting

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