http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46264
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-11-01 21:49:56 UTC --- foo::operator* returns a reference to a local variable which goes out of scope, causing c.data to contain garbage. operator* should return by value instead