#pragma once template class Pair { T first; D second; public: Pair() = default; Pair(const T& first, const D& second); const T& getFirst() const; const D& getSecond() const; void setFirst(const T& newValue); void setSecond(const D& newValue); }; template Pair::Pair(const T& first, const D& second) : first(first), second(second) {} template const T& Pair::getFirst() const { return first; } template const D& Pair::getSecond() const { return second; } template void Pair::setFirst(const T& newValue) { first = newValue; } template void Pair::setSecond(const D& newValue) { second = newValue; }