I'm curious where this fits in with single assignment semantics:
int x = 3;
x = 4; // error!
int* p = &x;
*p = 4; // is that an error? replies(2):
int x = 3;
x = 4; // error!
int* p = &x;
*p = 4; // is that an error?