Justin Johansson wrote:
C++ constructors/destructors and stack-unwinding mechanism are considered FREAKING AWESOME.
Ok, good. Now write (using C++ RAII) the following where both transactions must succeed or neither:
void foo() { A(); scope (failure) undo_A(); B(); scope (failure) undo_B(); writeln("A and B succeeded!"); }