title: Does initialization entail lvalue-to-rvalue conversion? Is `int x = x;` UB?
body: <p>The C++ standard contains a semi-famous example of "surprising" name lookup in 3.3.2, "Point of declaration":</p>
  
  <pre><code>int x = x;
  </code></pre>
  
  <p>This initializes <code>x</code> with itself, which (being a primitive type) is <em>uninitialized</em> and thus has an indeterminate value (assuming it is an automatic variable).</p>
  
  <p>Is this actually undefined behaviour?</p>
  
  <p>According to 4.1 "Lvalue-to-rvalue conversion", it is undefined behaviour to perform lvalue-to-rvalue conversion on an uninitialized value. Does the right-hand <code>x</code> undergo this conversion? If so, would the example actually have undefined behaviour?</p>