I didn't believe it would work but it does. It boils down to<p><pre><code> sizeof(int) == sizeof(void)
</code></pre>
vs<p><pre><code> sizeof(int) == sizeof(int)
</code></pre>
As a non-standard extension, in gcc (and thus clang and icc for compatibility, it seems) void has a size of 1. In a conforming compiler, it's an error.