0

在我当前的项目中,我重载了 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;

有什么特别需要我表演的吗?

4

0 回答 0