title: What value does const void * offer over void *?
body: <p>In C++, is there any value in using a <code>const void *</code> for an argument type to a function over a <code>void *</code>?  Since a <code>void *</code> is opaque, is there any risk of modification other than if the user does <code>reinterpret_cast</code>, in which case they could likewise do <code>const_cast</code> on a <code>const void *</code> and thus does one really buy anything?  I ask because I was using a utility template class for shared pointers which provided a specialization on <code>void</code> to avoid <code>void &amp;</code> issue but no specialization was provided for <code>const void</code> and thus I wonder whether this was just an oversight or should it never be needed?</p>