namespace std {
template<class T, class Ty2>
struct pair;
// TEMPLATE FUNCTIONS
template<class Ty1, class Ty2>
pair<Ty, Ty2> make_pair(Ty1 val1, Ty2 val2);
template<class Ty1, class Ty2>
bool operator==(const pair<Ty, Ty2>& left,
const pair<Ty1, Ty2>& right);
template<class Ty1, class Ty2>
bool operator!=(const pairTy, Ty2>& left,
const pair<Ty1, Ty2>& right);
template<class Ty1, class Ty2>
bool operator<(const pair<Ty, Ty2>& left,
const pair<Ty1, Ty2>& right);
template<class Ty1, class Ty2>
bool operator>(const pair<Ty1, Ty2>& left,
const pair<Ty1, Ty2>& right);
template<class Ty1, class Ty2>
bool operator<=(const pair<Ty1, Ty2>& left,
const pair<Ty1, Ty2>& right);
template<class Ty1, class Ty2>
bool operator>=(const pair<Ty1, Ty2>& left,
const pair<Ty1, Ty2>& right);
namespace rel_ops {
template<class Ty>
bool operator!=(const Ty& left, const Ty& right);
template<class Ty>
bool operator<=(const Ty& left, const Ty& right);
template<class Ty>
bool operator>(const Ty& left, const Ty& right);
template<class Ty>
bool operator>=(const Ty& left, const Ty& right);
}; // namespace rel_ops
namespace tr1 { [added with (TR1)]
template<int Idx, class T1, class T2>
RI& get(pair<T1, T2>& pr);
template<int Idx, class T1, class T2>
const RI& get(const pair<T1, T2>& pr);
template<class T1, class T2>
class tuple_element<0, pair<T1, T2> >;
template<class T1, class T2>
class tuple_element<1, pair<T1, T2> >;
template<class T1, class T2>
class tuple_size<pair<T1, T2> >;
} // namespace tr1
} // namespace std