我想使用索引技巧来消除for
我的 C++11 程序中的循环(类似于强制-funroll-loops
)。
这是一个例子:
template<unsigned...> struct indices
{
};
template<unsigned M, unsigned... Is> struct indices_gen
: indices_gen<M - 1, M - 1, Is...>
{
};
template<unsigned... Is> struct indices_gen<0, Is...> : indices<Is...>
{
};
template <typename T>
struct example
{
example()
{
assign(indices_gen<3>(), 0);
}
template<unsigned... Is, typename U>
void assign(indices<Is...>, U value)
{
[](...){}((array[Is] = value)...);
}
T array[3];
};
int main()
{
example<int> ex;
return 0;
}
是否可以创建一个indices_gen<S,E>
从开始索引S
到结束索引E
?你能告诉我怎么做吗?