title: const tuple - but able to change content (references)?
body: <p>I have defined a (const) tuple as follows:</p>
  
  <pre><code>double var1, var2;
  const tuple&lt;double&amp;, double&amp;&gt; my_tup(var1, var2);
  </code></pre>
  
  <p>Now, why am I able to do the following:</p>
  
  <pre><code>get&lt;0&gt;(my_tup) = 3215.513
  </code></pre>
  
  <p>The above code would only make sense if the references contained in the tuple are <code>const</code> pointers to var1 and var2 - the memory address itself is <code>const</code> (because the tuple is <code>const</code>, so we cannot change any of its contents), but the contents of the memory addresses pointed to, not, hence the allowed change. But, if you look at <a href="https://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in">this</a> discussion about what references really are, you will see there are some fervent advocates for the reference not being a <code>const</code> pointer, but just a different name for a variable already declared. In that case, how can I interpret a <code>const</code> tuple of references? Is declaring the tuple as <code>const</code> above, if it contains references, pointless then?</p>
  
  <p>(Note that I had to use a <code>const</code> tuple in another setting, which is too complicated to explain and irrelevant to the question.)</p>