/* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Hewlett-Packard Company makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * */ #ifndef PAIR_H #define PAIR_H #ifndef __GNUG__ #include #endif template struct pair { T1 first; T2 second; #if defined(_AIX) && !defined(__GNUG__) // if T? is const xlC goofes about first/second not beeing inited pair() : first (T1()), second (T2()) {} #else pair() {} #endif pair(const T1& a, const T2& b) : first(a), second(b) {} }; template inline bool operator==(const pair& x, const pair& y) { return x.first == y.first && x.second == y.second; } template inline bool operator<(const pair& x, const pair& y) { return x.first < y.first || (!(y.first < x.first) && x.second < y.second); } template inline pair make_pair(const T1& x, const T2& y) { return pair(x, y); } #endif