【发布时间】:2011-01-11 04:41:47
【问题描述】:
我正在使用 boost 变体来保存一些生成的类型,现在我的代码生成器会创建一个带有类型的标头和一个能够保存它们的变体。在初始化时,我想迭代变量中允许的类型,而不是变量当前持有的类型。
我可以用变体做到这一点吗?
【问题讨论】:
-
遍历类型做什么?
-
我需要填充地图
.
标签: c++ boost iterator boost-variant
我正在使用 boost 变体来保存一些生成的类型,现在我的代码生成器会创建一个带有类型的标头和一个能够保存它们的变体。在初始化时,我想迭代变量中允许的类型,而不是变量当前持有的类型。
我可以用变体做到这一点吗?
【问题讨论】:
标签: c++ boost iterator boost-variant
boost::variant 通过types 公开其类型,这是一个 MPL 列表。您可以使用 mpl::for_each 对 MPL 列表执行运行时操作:
struct printer {
template<class T> void operator()(T t) {
std::cout << typeid(T).name() << std::endl;
}
};
// ...
typedef boost::variant<int, char> var;
boost::mpl::for_each<var::types>(printer());
【讨论】:
boost::mpl::make_identity<>。