// pair.C
// ----------------------------------------------------------------
// COMP 290-001: Algorithm Library Design, Lutz Kettner, 01/11/2000
// Example for template constructor.

template <class T1, class T2>
struct pair {
    T1 first;
    T2 second;
    pair() {}  // don't forget the default constructor if there are also others
    pair( const T1& a, const T2& b) : first(a), second(b) {}
    // template constructor
    template <class U1, class U2>
    pair( const pair<U1,U2>& p);
};

template <class T1, class T2> 
template <class U1, class U2>
pair<T1,T2>::pair( const pair<U1,U2>& p) 
    : first( p.first), second( p.second) {}

int main() {
    pair< int, int> p1( 5, 8);
    pair< double, double> p2(p1);
}

