Luke Bradford wrote:
I've been finding a lot of use for a type of smart pointer I call shared_ptr_nonnull, which is a variation on shared_ptr which is never allowed to be empty. Specifically:
(1) It doesn't have reset() with no arguments, doesn't have a default constructor, and doesn't have implicit conversion to bool (which would always be true.) [...]
Has there been any discussion of something like this? Does anybody have any thoughts, suggestions, criticisms? Who's in charge of the smart pointer library these days?
I think it makes a lot of sense to have a pointer that can't be null and doesn't have a default constructor. Default construction isn't always possible. Otherwise it's against the intuition that a default constructor shouldn't allocate memory. Explicit initialization has inherent value as well, especially for pointers. Coincidentally I've recently been working on a different kind of smart pointer which has these same properties (no reset, no default ctor, no implicit conversion to bool). Even more coincidentally I might gauge interest today. Please don't let this distract you though; my smart pointer is quite different in other respects. -Julian