http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49021
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2011.05.17 17:24:37 Ever Confirmed|0 |1 --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-05-17 17:24:37 UTC --- slightly reduced, but boost/foreach.hpp still includes thousands of lines in this version vector<T> zeros its data member on destruction, so using it after destruction is obvious #include <boost/foreach.hpp> template<typename T> struct vector { typedef const T* const_iterator; ~vector() { data = T(); } T data; const_iterator begin() const { return &data; } const_iterator end() const { return &data + 1; } }; vector<int> v = { 1 }; const vector<int *> getv() { vector<int *> ret = { &v.data }; return ret; } int main(int argc, char **argv) { BOOST_FOREACH(int *w, getv()) __builtin_printf("%d\n", *w); return 0; }