cond_type;

  T1 first;
  T2 second;

  pair(boost::add_reference&lt;const T1&gt;::type nfirst,
       boost::add_reference&lt;const T2&gt;::type nsecond)
  :first(nfirst), second(nsecond) { }
};</pre>

<p>Add back in the standard comparision operators, default
constructor, and template copy constructor (which are all the
same), and you have a std::pair that can hold reference types!</p>

<p>This same extension <i>could</i> have been done using partial
template specialization of &quot;pair&quot;, but to spe