title: Why are references not reseatable in C++
body: <p>C++ references have two properties:</p>
  
  <ul>
  <li>They always point to the same object.</li>
  <li>They can not be 0.</li>
  </ul>
  
  <p>Pointers are the opposite:</p>
  
  <ul>
  <li>They can point to different objects.</li>
  <li>They can be 0.</li>
  </ul>
  
  <p>Why is there no "non-nullable, reseatable reference or pointer" in C++? I can't think of a good reason why references shouldn't be reseatable.</p>
  
  <p><strong>Edit:</strong>
  The question comes up often because I usually use references when I want to make sure that an "association" (I'm avoiding the words "reference" or "pointer" here) is never invalid.</p>
  
  <p>I don't think I ever thought "great that this ref always refers to the same object". If references were reseatable, one could still get the current behavior like this:</p>
  
  <pre><code>int i = 3;
  int& const j = i;</code></pre>
  
  <p>This is already legal C++, but meaningless.</p>
  
  <p><strong>I restate my question like this:</strong> "What was the rationale behind the 'a reference <em>is</em> the object' design? Why was it considered useful to have references <em>always</em> be the same object, instead of only when declared as const?"</p>
  
  <p>Cheers, Felix</p>