It is valid, but it almost goes without saying that
int a = a;
is more harmful than not.
As for other types I would say, that one might do useful work by overloading the copy constructor and using default construction.
On the other hand I cannot think of any circumstance where such code is needed, and since IMO the code gets so convoluted by this syntax, my subjective opinion is that it isn't any good reason to be able to write such assignments. Especially not when one consider all the bugs that could be prevented by disallowing (or at least warn about) the syntax.