int_19h 15 hours ago

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`.

1
112233 13 hours ago

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.