// ------
// Pair.h
// ------

#ifndef Pair_h
#define Pair_h

template <typename T1, typename T2>
struct my_pair {
    typedef T1 first_type;
    typedef T2 second_type;

    T1 first;
    T2 second;

    my_pair (const T1& first = T1(), const T2& second = T2()) :
            first  (first),
            second (second)
        {}

    template <typename U1, typename U2>
    my_pair (const my_pair<U1, U2>& that) :
            first  (that.first),
            second (that.second)
        {}};

template <typename T1, typename T2>
my_pair<T1, T2> my_make_pair (const T1& first, const T2& second) {
    return my_pair<T1, T2>(first, second);}

#endif // Pair_h


syntax highlighted by Code2HTML, v. 0.9.1