An exception in the first new expression isn’t a problem - we haven’t yet allocated resources or modified the system state.
If an exception is propagated from the second new expression we need to release t1. So we catch it, delete t1 and throw the exception again to let it propagate.
The two assignments are of base types (pointers) and cannot throw an exception.
[Does anyone want to volunteer the code to handle an exception being thrown by one of the delete expressions? - For a simple case like this I think it can be done; but not on a single slide.]
Given the assumption that delete expressions don’t throw, we have some code that meets the strong exception safety guarantee. However, it is getting messy (we’ve doubled the line count), and this was a simple example!