C ++:我们可以收集类型吗?

时间:2011-11-29 06:23:33

标签: c++ boost types

我想知道我们是否可以做类似

的事情
a.pushType<int>
a.pushType<std::string>
a.pushType<char>

所以我们可以打电话

std::map<a.T1, a.T3> mymap;
std::map<a.T1, a.T2> mymap;
someClass<a.T1, a.T2, a.T3>

我需要不是在运行时,而是在编译时(在我的标题库中提供它。)

是否可以使用C ++ 03和Boost?

2 个答案:

答案 0 :(得分:7)

这是一种名为TypeLists的机制;据我所知,它是由Andrei Alexandrescu在 Modern C ++ Design 中首次提出的。在Alexandrescu的库Loki中有一个TypeLists的实现。我也认为Boost.MPL有一个类似的结构:vector

答案 1 :(得分:0)

typedef std::pair<int, std::string> a;

std::map<a::first_type, a::second_type> mymap;

但是必须在编译时知道这些类型。有办法解决它,但它们非常复杂。