可变模版参数

c++11 可变模版参数

1
2
template <class... T>
void f(T... args);
  • 递归函数展开参数包
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <iostream>

    template <class... T>
    void f(T... args)
    {
    std::cout << sizeof...(args) << std::endl;
    }

    void func() {}
    template <class T, class... Args>
    void func(T first, Args... remain) {
    std::cout << first << " ";
    if (sizeof...(remain) == 0) return;
    func(remain...);
    }

    int main() {
    func(2, 3, 9);
    return 0;
    }
  • 逗号表达式展开参数包