【发布时间】:2016-03-12 13:48:39
【问题描述】:
我有一个带有模板参数的函数,我知道它是几个不同元素类型的标准 C++ 容器的std::tuple。
如何从中提取元素类型的 std::tuple 类型?
例如,假设我有以下函数
template <typename TupOfCtrs>
void doStuff(const TupOfCtrs& tupOfCtrs) {
using TupOfElements = /*extract a tuple type by applying CtrT::value_type to each container in tupOfCtrs and combining the results into an std::tuple*/;
MyHelperClass<TupOfElements> helper;
}
我知道它是这样称呼的:
std::list<Foo> l {/*...*/};
std::vector<Bar> v {/*...*/};
std::deque<Baz> d {/*...*/};
auto tup = std::make_tuple(l, v, d);
在这种情况下,我希望将 TupOfElements 帮助器类型定义为 std::tuple<Foo, Bar, Baz>。
请注意,我不需要实际创建元组,只需获取其类型即可。
如何实现,可能使用Boost::Fusion 库?
【问题讨论】:
标签: c++ templates c++11 boost boost-fusion