on operators, default constructor, and
template copy constructor for simplicity:</p>

<pre>template &lt;typename T1, typename T2&gt; 
struct pair 
{
  typedef T1 first_type;
  typedef T2 second_type;

  T1 first;
  T2 second;

  pair(const T1 &amp; nfirst, const T2 &amp; nsecond)
  :first(nfirst), second(nsecond) { }
};</pre>

<p>Now, this &quot;pair&quot; cannot hold references as it
currently stands, because the constructor would require taking a
reference to a reference, which is currently illegal [7]. L