how does
int x = x;
has ever made sense? In hostoric minimalist direction?(and if you have to ask, x is initialized — with the uninitialized value of x)
It is very occasionally useful when you need to define a self-referential data structure, i.e. something like:
struct foo { foo& p; ... };
foo x{x, ...};
Still, this is hardly a good justification for it to be the default behavior. There's a reason why ML has `let rec`. Thank you for this, it illustrates an important distinction. (Your example would be clearer if you used a pointer instead of a reference)
Address of variable does not depend on it's value, and can be known and used before the variable is defined. At no point in your example value of "x" is used before the end of initialization.
However, in order to allow that, the language goes and allows the use of uninitialized value too. That is just plain horrible design.