/**************************************************************************\ MODULE: pair SUMMARY: Pair templates. The decalaration Pair<S,T> p; creates a pair object using the default constructors for S and T. The member p.a is the first component (of type S) and the member p.b is the second component (of type T). \**************************************************************************/ #include <NTL/tools.h> template<class S, class T> class Pair { public: S a; T b; Pair(); // default constructor...invokes default constructors for S and T Pair(const S& x, const T& y); // initialize with (x, y) ~Pair(); // destructor...invokes destructors for S and T // defaut copy and move constructors and assignment }; template<class S, class T> Pair<S,T> cons(const S& x, const T& y); // returns Pair<S,T>(x, y) /**************************************************************************\ Input/Output The I/O format for a Pair is [a b] \**************************************************************************/ template<class S, class T> istream& operator>>(istream&, Pair<S,T>&); template<class S, class T> ostream& operator<<(ostream&, const Pair<S,T>&); /**************************************************************************\ Equality Testing \**************************************************************************/ template<class S, class T> long operator==(const Pair<S,T>& x, const Pair<S,T>& y); template<class S, class T> long operator!=(const Pair<S,T>& x, const Pair<S,T>& y);