There are other ways that functions can behave in the presence of exceptions and variations have been tried.
For example, if we assume for a moment that f() is a member function of an object obj then after an exception we may have:
obj is in an invalid state and the only operation supported is deletion.
You may have encountered other…
My experience is that the “weak” and “strong” guarantees are powerful enough to build systems with. (I also hope to demonstrate that they are attainable.)
These references appear elsewhere in the slides, but they are repeated here:
H Muller - “Ten rules for handling exception handling successfully” – C++ Report Jan.’96
H Sutter - “Designing exception-safe Generic Containers” – C++ Report Sept.’97
H Sutter - “More exception-safe Generic Containers” – C++ Report Nov-Dec.’97
D Abrahams’ - "Exception Safety in STLport” - http://www.stlport.org/doc/exception_safety.html