Does using a wrapper class for pointers make sense?
<p>In C++, pointers generally have a lot more functionality associated with them than is really necessary.  A class template that wraps a pointer and removes most of the less-used features (arithmetic, indexing, deletion).  Each function could then decide how powerful a pointer it requires and take the appropriate type.</p>

<p>Would using such types make sense in an actual project, though?  Are errors caused by unintentional arithmetic/deletion common enough to justify the additional effort?</p>

<p>To clarify: I am considering this as a system alongside existing <code>weak_ptr</code>, <code>shared_ptr</code>, <code>unique_ptr</code> -- those three are great when ownership is involved, but sometimes non-owning nullable or reseatable references are useful.</p>
