我有这样的功能
template<typename Arg, typename... Args>
void input(Arg &arg, Args&... args) {
在那里我有一个 if 来检查 arg 是否是一个数组(我以不同的方式处理数组)。然后我尝试访问数组的索引,但我得到了subscripted value is neither array nor pointer
. 如果我不混合数组和普通变量,这不会发生。我应该怎么办?
只需重载函数以获取常规类型和数组类型,如下所示:
#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 !"
}