Doesn't it make more sense to use a different operation for actually changing the value, and use cast only for re-interpretation of the bits? I know that in C the fact that the same term is used for both always struck me as a very bad idea.