We saw last time that the COM rules for output pointers are that
they must be initialized on return from a function,
even if the function fails.
The COM marshaller relies on this behavior,
but then again, so do you; you just don't realize it yet.
If you use a smart pointer library (be it ATL
or boost or whatever), you are still relying on ...