6 ms·
Yes, both unique and shared ptrs default to null and in many ways are drop in replacements for naked pointers. If the empty state thing was in reference to sma
by albinofrenchy 9y ago
Yes, both unique and shared ptrs default to null and in many ways are drop in replacements for naked pointers.
If the empty state thing was in reference to smart pointers, it'd be a remarkable misunderstanding of how they work and how they should be used.
- tomjakubowski 9y ago> If the empty state thing was in reference to smart pointers, it'd be a remarkable misunderstanding of how they work and how they should be used. No, I don't think so. Many C++ libraries, especially those originally developed before C++11, implement their own smart pointer templates, which may end up having diverging semantics. That's exactly what OP was describing. Examples off the top of my head include: CEF, Chromium, v8, Qt, glibmm, and the internal codebase where I work.
- albinofrenchy 9y agoThere are definitely better smart pointer semantics than others -- see the now deprecated auto_ptr. But it really doesn't fit the argument as framed. All smart pointer implementations are some valuable niceties wrapped around a naked pointer. It has nothing to do with preferring references to pointers; at the end of the day you just have a pointer -- just one that gets default initialized to 0, and deletes itself when you are done with it. Frankly, the type of C++ developer that spends any serious amount of time trying to come to terms with a smart pointer API; even one they haven't seen before is the type of developer I wouldn't really want manipulating naked pointers.