我有一个数学向量,我用模板参数定义了它的维度int N
。问题是我在构造函数中添加了许多参数,最多 N=9,g++ 对此没问题,但英特尔编译器抱怨这个并发出警告
警告 #175:下标超出范围
是的,下标看起来超出了范围,但是不,它不会引起问题,因为它是这样写的:
template <int N, typename T>
Vector<N,T>::Vector(T val0, T val1, T val2, T val3, T val4, T val5, T val6, T val7, T val8, T val9)
{
for(int i = 0; i < N; i++)
{
_values[i] = T();
}
_values[0] = val0;
if(N > 1)
_values[1] = val1;
if(N > 2)
_values[2] = val2;
if(N > 3)
_values[3] = val3;
if(N > 4)
_values[4] = val4;
if(N > 5)
_values[5] = val5;
if(N > 6)
_values[6] = val6;
if(N > 7)
_values[7] = val7;
if(N > 8)
_values[8] = val8;
if(N > 9)
_values[9] = val9;
}
其中 N 是维度,就像我提到的那样,T 是数据类型。所以英特尔编译器不够聪明,无法意识到这不会导致任何问题,因为除非索引有效,否则我不会访问元素。
问题是:如何使用宏/预编译器命令之类的东西告诉编译器它不应该为这些行发出警告 #175?请注意,完全禁用警告 #175 并不明智,尽管我仍然可以在其他地方犯下真正的错误;我只想为这个代码区域禁用它。
感谢您的任何努力。