Created on 2014-11-19.00:00:00 last changed 72 months ago
According to 8.2.9 [expr.static.cast] paragraph 1,
The static_cast operator shall not cast away constness (8.2.11 [expr.const.cast]).
However, this phrasing is problematic in the context of a C-style cast like the following:
const void *p; int *q = (int*)p;
The intent of 8.4 [expr.cast] is that this should be interpreted as a static_cast followed by a const_cast. However, because int* to const void* is a valid standard conversion, and 8.2.9 [expr.static.cast] paragraph 7 allows static_cast to perform the inverse of a standard conversion sequence, the C-style cast is interpreted as just a static_cast without a const_cast and is thus ill-formed.