#ifndef PAIR_H_ #define PAIR_H_ // class template definition has the template // parameter ("Thing") in scope throughout template class Pair { public: Pair() = default; // default constructor still initializes data members Thing get_first() const { return first_; } // inline definition Thing get_second() const { return second_; } // inline definition void set_first(const Thing& copyme); void set_second(const Thing& copyme); void Swap(); private: Thing first_, second_; }; // The compiler must see the definition for any template that is // used. That means customers of Pair.h need to be // shown the definition of class Pair; one way to do this is to // include the .cc file associated with the .h file right in // the header, as follows. This is the "inclusion compilation // model." #include "Pair.cc" #endif // PAIR_H_