In another forum someone claimed that with the following code ...
f( shared_ptr<A>( new A() ), shared_ptr<A>( new B() ) )
... C++ is allowed to evaluate the two news before assigning their return-value to the shard_ptrs and thereby producing a memory-leak when the second new (in whatever order they are executed) throws an exception. I can't believe this because it would be too easy to define the language in a way that this wouldn't happen.
Is this really true?