C++ 使用std::index_序列的默认参数
我很难理解以下内容。这段代码为什么要编译C++ 使用std::index_序列的默认参数,c++,templates,c++14,variadic-templates,index-sequence,C++,Templates,C++14,Variadic Templates,Index Sequence,我很难理解以下内容。这段代码为什么要编译 template <size_t N, size_t... N_i, size_t... M_i> auto foo2(std::index_sequence<M_i...> = std::make_index_sequence<N>()) { constexpr size_t values[] = {N_i...}; return A<values[M_i]...>(); } tem
template <size_t N, size_t... N_i, size_t... M_i>
auto foo2(std::index_sequence<M_i...> = std::make_index_sequence<N>())
{
constexpr size_t values[] = {N_i...};
return A<values[M_i]...>();
}
template <size_t N,size_t... N_i>
auto foo()
{
return foo2<N,N_i...>(std::make_index_sequence<N>());
}
int main()
{
foo<2, 1,2,3>();
}
非常感谢。给出:
template <size_t N, size_t... N_i, size_t... M_i>
auto foo2(std::index_sequence<M_i...> = std::make_index_sequence<N>());
然后你可以写:
template <size_t N,size_t... N_i>
auto foo()
{
return foo2<N,N_i...>();
}
模板
自动foo()
{
返回foo2();
}
template <size_t N, size_t... N_i, size_t... M_i>
auto foo2(std::index_sequence<M_i...>)
{
constexpr size_t values[] = {N_i...};
return A<values[M_i]...>();
}
template <size_t N,size_t... N_i>
auto foo2()
{
return foo2<N,N_i...>(std::make_index_sequence<N>());
}
template <size_t N,size_t... N_i>
auto foo()
{
return foo2<N,N_i...>();
}