template <class Thing> Thing &Pair<Thing>::get_first() { return first_; } template <class Thing> Thing &Pair<Thing>::get_second() { return first_; } template <class Thing> void Pair<Thing>::set_first(Thing ©me) { first_ = copyme; } template <class Thing> void Pair<Thing>::set_second(Thing ©me) { second_ = copyme; } template <class Thing> void Pair<Thing>::Reverse() { // makes *3* copies Thing tmp = first_; first_ = second_; second_ = tmp; }