std :: array, оператор перегрузки не работает с Intel Compiler 15.0 на Linux

В моем текущем проекте я перегружал операторы std :: array. Вот пример с минусом:

template <class T, int N>
std::array<T, N> operator-(std::array<T, N>& arr1, std::array<T, N>& arr2) {
std::array<T, N> dst;
for ( auto itArr1 = arr1.begin(), itArr2 = arr2.begin(), itDst = dst.begin(); itArr1 != arr1.end(); ++itArr1, ++itArr2, ++itDst )
*itDst = *itArr1 - *itArr2;
return dst;
}

При компиляции моего проекта с VS 2013 и использованием компилятора Intel 15.0 проблем нет, и оператор работает нормально.

Но когда я в Linux с компилятором Intel 15.0, я получил следующую ошибку при вызове оператора между двумя std :: array:

error: no operator "-" matches these operands
operand types are: std::array<int, 2UL> - std::array<int, 2UL>
auto result = arr1 - arr2;

Есть ли что-то особенное, что я должен выполнить?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]