【问题标题】:Confused with parameter pack declaration, C++与参数包声明混淆,C++
【发布时间】:2018-03-29 09:06:17
【问题描述】:

谁能解释一下下面的声明是什么意思?

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

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

【问题讨论】:

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


    【解决方案1】:

    这是否意味着 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}]
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2022-01-13
      • 2011-08-06
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 2022-01-16
      • 2013-05-23
      相关资源
      最近更新 更多