volatile should not be used to describe non-hardware lvalues, and fix const cast...