For sure, I plan to make habitual use of them. I've just read a good deal of RAII which has been touted as 'sufficient' in the face resource leaks. Perhaps that's all it is, sufficient, but not exemplary.
That's a good point, unique_ptr confers an expected meaning of how the pointer is to be used. Barring a comment, a naked pointer doesn't say anything about its expected purpose.
While I haven't been on a large project, one that I'm currently working on is coming close. Relationships are established such that it's important to keep track of ownership issues. I am vaguely aware that the system is complex enough, that despite my best intentions, I'm going to miss some critical step that will cause future headaches.
A (newbie) usage question:
Suppose I have a base class and several derived classes. I maintain a vector of Base (abstract) objects and one for each Derived type objects. The Base vector is a superset of all the Derived vectors. A factory creates each derived object and I add it to the Base vector and the appropriate derived vector. Where should unique_ptr/shared_ptr/etc. live in this scheme? My inexperienced guess is that it lives between factory (allocation) and storage on the vectors after which point it is moved onto the vector. Or should it be something different?
BTW, thanks Servant and Ravyne.