假设我有一个名为 generic_pair 的类,其形式为:
template < typename K, typename V >
struct generic_pair{
K key;
V value;
};
现在,问题是我希望能够将一堆这些 generic_pairs 存储在 STL 容器中,但容器中的所有 <K, V> 并非都是相同的类型。例如,一些元素可能是 < int, int > 而其他元素可能是 < int , string > 等等。问题是我们怎样才能做到这一点?
我的第一个想法是使用“标签”来创建封装类型的层次结构,并使用泛型类型声明容器,但实际元素具有继承类型。例如,
struct base_type{
typedef void type;
};
struct int_type: base_type{
typedef int type;
}
struct string_type: base_type{
typedef std::string type;
}
/// and so on establish a type hierarchy as necessary and then...
std::vector < generic_pair < base_type, base_type > > vec;
我敢打赌有更好,更正确的方法来做到这一点?任何想法,方向表示赞赏。如果您在 MPL 或其他地方看到过类似的实现或相关工具/技术,那也很有帮助。(我试图避免宏)