我试图根据a previous thread中的答案,颠倒模板 - 可变参数std::size_t
参数序列的顺序。但由于某种原因,它不起作用。
这是一个常规的可变参数打印功能:
template<typename = void>
void print(void)
{
std::cout << std::endl;
}
template<typename... T>
void print(std::size_t index, T... indexes)
{
std::cout << index << ' ';
print(indexes...);
}
这里是模板类链:
template<std::size_t... Indexes>
class NonRecursiveClass
{
public:
void show(void)
{
print(Indexes...);
}
};
template<std::size_t Count, std::size_t Index, std::size_t... Indexes>
class RecursiveClass;
template<std::size_t Count, std::size_t Index, std::size_t... Indexes>
class RecursiveClass : public RecursiveClass<Count - 1u, Indexes..., Index>
{
};
template<std::size_t Index, std::size_t... Indexes>
class RecursiveClass<0u, Index, Indexes...> : public NonRecursiveClass<Index, Indexes...>
{
};
基本上,我们的想法是,如果您创建一个RecursiveClass<5u, 10u, 1u, 6u, 478u, 23u>
对象,它将从NonRecursiveClass<23u, 478u, 6u, 1u, 10u>
对象继承,并且您在编译时将std::size_t
参数序列向后移
不幸的是,当我尝试一下时,我仍然可以获得原始订单。这是我的主要职能:
int main(void)
{
RecursiveClass<5u, 10u, 1u, 6u, 478u, 23u> foo;
foo.show();
return 0;
}
这是输出:
10 1 6 478 23
我做错了什么?