
It is similar to optional<T>, but in this case the idea is to not allow access to internal data if the pointer is null, only allowing a safe usage
There is interest to add something like this to Boost? Any comments or remarks?
This is just my opinion, but I believe that this approach is wrong. Dereferencing a null pointer is definitely wrong, but preventing it by silently dropping some portions of code (that the programmer intended to execute) doesn't look good either. If a programmer wants to call function f() on some object, but he makes a bug by forgetting to initialize the pointer/reference/handle, safe_ref would give him a false impression that his function has been executed. If you think of some rare cases where this behavior is exactly what one needs, perhaps you should consider renaming the wrapper to something like "ignoring_ref" or "skipping_ref". The part "safe" does not give an indication of what the wrapper really does, and it is not that clear to me if its behavior makes the program safer. Regards, &rzej