У меня есть класс работающей двунаправленной карты (сопоставление один к одному) следующим образом:
template <typename T1, typename T2>
class BiMap
{
public:
void insert(const T1& a, const T2& b);
private:
std::map<T1, T2*> map1_;
std::map<T2, T1*> map2_;
};
Мне удалось реализовать функцию insert
. Теперь я хочу реализовать функцию retrieve
таким образом, чтобы, если пользователь передал значение типа T1
скажем t1
, он вернул бы *map1_[t1]
, и аналогично, если они передадут значение типа T2
скажем t2
, онвернусь *map2_[t2]
. Гарантируется, что тип T1
не будет совпадать с типом T2
, так как я могу заставить его вернуть значение, проверив его тип?