与参数包声明,C ++混淆

时间:2018-03-29 09:06:17

标签: c++ c++11 templates parameters

任何人都可以解释以下声明的含义吗?

template<typename... T> void f2(std::vector<T*>...);

这是否意味着f2接受具有不同指针类型的std::vectors的数量?

1 个答案:

答案 0 :(得分:2)

  

这是否意味着f2接受具有不同指针类型的std :: vector的数量?

是!

template<typename... T> void f2(std::vector<T*>...) {}

int main()
{
    std::vector<int*> vi;
    std::vector<double*> vd;

    f2( vi, vd );
}

提示: 如果运行gcc,您可以使用:

template<typename... T> void f2(std::vector<T*>...) 
{   
    std::cout << __PRETTY_FUNCTION__ << std::endl;
}  

将输出:

void f2(std::vector<T*>...) [with T = {int, double}]