Boost logo

Boost :

From: Thomas Witt (witt_at_[hidden])
Date: 2001-10-20 09:46:13

The following applies to 1_25_0.

I am currently evaluating the intel compiler together with stlport-4.5. While
running the boost regression tests for this platform stlport debug mode
complained about usage of an invalidated iterator.

AFAICS the problem is due to the following idiom from


typename Config::InEdgeList& in_el = in_edge_list(g, target(e, g));
typename Config::InEdgeList::iterator in_i = in_el.begin();

for (; in_i != in_el.end(); ++in_i)
   if (&(*in_i).get_property() == (PType*)e.get_property()) {

In case the underlying representation for Config::InEdgeList& is indeed a
std::list this is a bug as in_i is invalidated when the corresponding element
is erased ( [lib.list.modifiers]). Assuming validity of an iterator
to an erased element sounds a bit strange to me even if an user define
container is used.

The reason for this not showing up in other configurations is that the usage
of _STLP_DEBUG seems to be inconsistent for regression testing. I checked the
gcc targets and _STLP_DEBUG is not defined there. I propose using _STLP_DEBUG
for all stlport targets.


Dipl.-Ing. Thomas Witt
Institut fuer Verkehrswesen, Eisenbahnbau und -betrieb, Universitaet Hannover
voice: +49(0) 511 762 - 4273, fax: +49(0) 511 762-3001

Boost list run by bdawes at, gregod at, cpdaniel at, john at