我有以下方法
template <std::size_t N, std::size_t... Indices>
void doSomething()
{
...
};
似乎无法为“Indices”提供默认值,例如:
Indices
。template <std::size_t N, std::size_t... Indices = std::make_index_sequence<N>>
void doSomething()
{
...
};
编译器报错,提示
error: expected primary-expression before '>' token
template <std::size_t N, std::size_t... Indices = std::make_index_sequence<N>>
^~
error: template parameter pack 'Indices' cannot have a default argument
template <std::size_t N, std::size_t... Indices = std::make_index_sequence<N>>
^~~
有什么解决方法吗?
template <std::size_t N> void doSomething()
版本的doSomething
,并调用带有所需包的那个函数。 - NathanOliverstd::make_index_sequence<N>
不是std::size_t...
。如果合法的话,你需要像这样使用std::size_t... Indices = [0, 1, 42]
。 - Jarod42