【发布时间】:2015-02-19 16:43:17
【问题描述】:
是否有可能实现一个可变参数模板类的函数成员,它从可变参数列表中返回给定类型的索引。
我看到的问题是创建某种假的可变参数列表,只是为了触发编译时模板评估。
template<typename... TArgs>
class Foo
{
template<typename T, typename TArg>
int _get_idx(int i, const TArg &curr, TArgs...args)
{
if (std::is_same(T, TArg)) {
return i;
}
else {
return get_id(i+1, args...);
}
}
用法类似于:
Foo<A, B, C> foo;
int i = foo.get_idx<B>(); // i == 1
【问题讨论】:
-
我相信std::tuple_element 就是您要找的。span>
-
@Nard 反过来,从索引中获取类型。 OP 希望从类型中获取索引。
-
@T.C.据我所知,OP 正在使用递归来检查每个索引的类型,直到他得到正确的索引。我相信通过使用
std::tuple_element,他可以在一个循环中这样做。
标签: c++ class variadic-templates