Why does the following code give the following error?
Why does the type need to be complete in order to be casted to void?
struct Incomp
I don't see anything prohibiting this, quoting N4140:
§5.4/4 The conversions performed by
[...]
— a
static_cast(5.2.9),[...]
can be performed using the cast notation of explicit type conversion.
§5.2.9/5 Otherwise, the
static_castshall perform one of the conversions listed below. No other conversion shall be performed explicitly using astatic_cast.§5.2.9/6 Any expression can be explicitly converted to type cv void, in which case it becomes a discarded-value expression (Clause 5). [...]
It's most likely a bug as tested on Rextester, an online VS2013 compiler, but compiles in rise4fun, Microsoft's online compiler which is bleeding edge.