У меня есть математический вектор, размеры которого я определяю с помощью параметра шаблона int N
. Проблема в том, что я добавляю ко многим параметрам в конструкторе до N = 9, g ++ с этим все в порядке, но компилятор Intel жалуется на это с предупреждением
предупреждение # 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 - тип данных. Таким образом, компилятор Intel недостаточно умен, чтобы понять, что это не вызовет никаких проблем, поскольку я не обращаюсь к элементу, если индекс не является действительным.
Возникает вопрос: как я могу сказать компилятору с помощью чего-то вроде макроса / команд предварительного компилятора, что он не должен выдавать предупреждение № 175 для этих строк? Заметьте, что полностью отключить предупреждение № 175 было бы неразумно, хотя я все равно мог бы сделать настоящую ошибку где-нибудь еще; Я просто хочу отключить его для этой области кода.
Спасибо за любые усилия.
N
вместо N параметров? - person Mario   schedule 30.08.2013