There seems to be some agreement that you can\'t willy nilly point (an int*) into a char array because of the C++ aliasing rules.
char
From this other question -
*((int*)buf) = 42;
writes an int with a int lvalue, so there is no aliasing issue in the first place.
int