在使用xtensor的以下函数中,我期望编译器在将表达式分配给精确张量时表达计算图auto z = 3.0 * u + 100 * xt::cos(u);
并评估结果。xt::xtensor_fixed<T, xt::xshape<nn>> out = z;
template<typename T, size_t nn>
T func_cos(xt::xtensor_fixed<T, xt::xshape<nn>> &u) {
auto z = 3.0 * u;
for (auto k = 0; k < 100; ++k){
z += xt::cos(u);
}
xt::xtensor_fixed<T, xt::xshape<nn>> out = z;
return out(0);
}
但是,我得到了一个错误
views_xtensor.cpp:76:11: error: no viable overloaded '+='
z += xt::cos(u);
[....]
我用auto
错了吗?如何在 for 循环中使用惰性求值?
感谢您的帮助!