C++ 这是什么意思。。。(三点)在c+中表示+;

C++ 这是什么意思。。。(三点)在c+中表示+;,c++,C++,这似乎是一个愚蠢的问题,但当我试图在SOF中查看这个答案时 我注意到这样的说法: template< typename IntType, std::size_t Cols, IntType(*Step)(IntType),IntType Start, std::size_t ...Rs > constexpr auto make_integer_matrix(std::index_sequence<Rs...>) { return std::

这似乎是一个愚蠢的问题,但当我试图在SOF中查看这个答案时

我注意到这样的说法:

template<
    typename IntType, std::size_t Cols, 
    IntType(*Step)(IntType),IntType Start, std::size_t ...Rs
> 
constexpr auto make_integer_matrix(std::index_sequence<Rs...>)
{
    return std::array<std::array<IntType,Cols>,sizeof...(Rs)> 
        {{make_integer_array<IntType,Step,Start + (Rs * Cols),Cols>()...}};
}

std::index\u序列
什么是。。。这里是什么意思

编辑1 报告为与此问题相关的原始问题的问题不正确:

这个问题不能回答这两种情况(因为它们不是参数数目可变的函数)

std::size\u t…Rs
std::index_序列
但这是一个很好的解释:


它被称为参数包,指零个或多个模板参数:

是类型为
std::size\u t
的参数包。 该类型的变量(例如,
Rs…my_var
)可以通过以下方式解包:

my_var... 
此模式大量用于转发(未知)数量的参数:

template < typename... T >
Derived( T&&... args ) : Base( std::forward< T >( args )... )
{
}
模板
派生(T&&…参数):基(标准::正向(参数)…)
{
}

他们指定,请参见重复链接了解如何使用它们。@CoryKramer:谢谢,但他们没有,例如std::size\u t…Rs不是一个参数数量可变的函数,它是一个参数数量可变的模板,如博客中所述。@CoryKramer您的“重复问题”不是这个的完全重复,因为除了可变参数外,还包含一个关于可变模板的问题。可能重复,但为什么需要“转发(未知)数量的参数”?@Henry,例如,获取命令行参数。此外,printf也使用了这一点。
std::size_t ...Rs
std::index_sequence<Rs...>
std::size_t ...Rs
my_var... 
template < typename... T >
Derived( T&&... args ) : Base( std::forward< T >( args )... )
{
}