我有这样的功能
template<typename Arg, typename... Args>
void input(Arg &arg, Args&... args) {
在那里,我有一个if,检查arg是否是一个数组(我处理数组的方式不同)。然后我尝试访问数组的索引,但我得到subscripted value is neither array nor pointer
。如果我不混合数组和正常变量,就不会发生这种情况。我该怎么办?
答案 0 :(得分:1)
简单地重载函数以采用常规类型和数组类型,如下所示:
#include <iostream>
template <typename T>
void f(T t)
{
std::cout<<"Regular version !\n";
}
template <typename T>
void f(T t[])
{
std::cout<<"Array version !\n";
}
int main()
{
f(2); // Prints "Regular version !"
int k[] = { 1, 2, 3 };
f(k); // Prints "Array version !"
}