如何将模板作为参数传递给函数

时间:2019-02-15 21:12:40

标签: c++ oop

    // Example program
#include <iostream>
#include <string>
#include <array>

using namespace std;

int returnSize(template z <class T, size_t>)
{
    /*if(arr.size() ==0)
    return 1;
    else
    return 2;
    */
    return 1;
}

int main()
{

  array<int,5> z;

  cout<<returnSize(z)<<endl;
}

我正在尝试将此数组模板z传递给函数,以便可以计算其大小。但是,我对如何将模板作为参数传递给函数一无所知。

1 个答案:

答案 0 :(得分:1)

您不能在函数的参数内声明模板本身。模板必须位于函数的前面,然后您可以根据需要在函数内部使用模板参数,例如:

#include <iostream>
#include <array>

template <class T, size_t N>
int returnSize(const std::array<T, N> &arr)
{
    return arr.size();
    // or: return N;
}

int main()
{
    std::array<int,5> z;
    std::cout << returnSize(z) << std::endl; // <-- calls returnSize<int,5>(z) ...
}

输出:

  

5

Live Demo