template<class T1, class T2>
class tuple_element<0, pair<T1, T2> > {
typedef T1 type;
};
template<class T1, class T2>
class tuple_element<1, pair<T1, T2> > {
typedef T2 type;
};
[Added with TR1]
The templates are specializations of the template class tuple_element. Each has a nested typedef type that is a synonym for the type of the corresponding pair element.