----- Mensaje original ----- De: Ovanes Markarian <om_boost@keywallet.com> Fecha: Martes, Noviembre 20, 2007 4:57 pm Asunto: [Boost-users] [multi-index] dereferencing the end iterator Para: boost-users@lists.boost.org
Hello Joaquín,
today I faced some problem, when debugging the code. [...] When created a view for vx_hash tag and going to change the invalid iteratorlike view.end(). Dereferencing view.end() fails as awaited, but this code which calls my TypeModifier:
view.modify(view.end(), my_modifier);
This will result in my_modifier call with dereferenced iterator, which contains badly initialized object. [...]
Calling modify(end(),...) is illegal just as dereferencing end() is, but that does not mean that you can expect a crash when doing so: as you're invoking undefined behavior anything can happen. If you want to make sure that these illegal operations are properly detected and reported in a predictable way, take a look at Boost.MultiIndex safe mode: http://boost.org/libs/multi_index/doc/tutorial/debug.html#safe_mode (Don't forget to turn it off in release mode). Hope this helps, Joaquín M López Muñoz Telefónica, Investigación y Desarrollo