C++变长模板使用
C++11开始支持支持变长模板(variadic template),模板参数可以为任意多个, 变长模板参数用省略号来标识(…)。
变长模板参数通常以递归的形式打开(因此需要定义一个没有变长参数的base case模板),下面借用一个例子来说明:
1 |
|
上面代码的输出如下:
1 | void Foo(Arg) [with Arg = std::__cxx11::basic_string<char>] |
求和
下面尝试使用变长模板来实现一个求和的函数。
1 |
|
得到的结果如下:
1 | First Sum(First, Args ...) [with First = int; Args = {int, int, int, int}] |