Sebastian Weber:
Hi Peter!
bind_test passes for my compiler. I actually cannot sent you a senseful backtrace, since the compilation in debugging mode always yields a executable which works as it should (even though optimizations are on). Only compiling in release mode with -Ox x>0 yields a crashing executable. Seems like a gcc bug to me, but I thought some Problems like this are known. Attached is the affected code.
Nothing wrong with the code... You could try removing the "const" from the const key_type k in the declaration of undo_put. Another thing I see is that your commented-out detail::undo_put stores the property map by value, whereas the bind expression uses ref(rpa). Could this make a difference? Is it possible that the undo action is executed after rpa has been destroyed?