Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用std::index_序列的默认参数_C++_Templates_C++14_Variadic Templates_Index Sequence - Fatal编程技术网

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...>();
}