> First of all, you say: "The key is in the std::swap. It is guaranteed, > by the standard, never to throw".
Technically, you are correct about std::swap. Again, I need to be more clear. std::swap on raw pointers is guaranteed never to throw. (simiar to an assignment, but easier to write) And, given the guidelines in Herb Sutter's excellent book, it would behoove one to write swap methods on more complex classes in a way so that they are guaranteed never to throw in order to facilitate code like this. But, this is getting off topic. As a more general question...... to anyone who knows exactly the level of exception safety that I am addressing...... are there any great pitfalls, outside of the lack of deterministic destruction, that have proven to be difficult with creating strong exception safe code in C#? Thanks, -T You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.