// 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传递给函数,以便可以计算其大小。但是,我对如何将模板作为参数传递给函数一无所知。
答案 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