考虑以下(工作)片段:
Eigen::ArrayXd x (8);
x << 1, 2, 3, 4, 5, 6, 7, 8;
Eigen::TensorMap<Eigen::Tensor<double, 2>> y (x.data(), 2, 4);
这也有效:
const Eigen::ArrayXd const_x = x;
const Eigen::Map<const Eigen::ArrayXXd> z (const_x.data(), 2, 4);
我试图找出为什么我不能这样做:
const Eigen::TensorMap<const Eigen::Tensor<double, 2>> const_y (const_x.data(), 2, 4);
我正在使用Eigen 3.3.3(也尝试过3.3.4)
答案 0 :(得分:5)
您正在尝试存储const张量。
Error 2 error C2664: 'Eigen::TensorMap<PlainObjectType>::TensorMap(double *,__w64 int,__w64 int)' : impossible to convert parameter 1 from 'const double *' to 'double *'
我认为你的意思是在const double上有一个张量(如@CarlodelMundo所提到的那样)。
const Eigen::TensorMap<Eigen::Tensor<const double, 2>> const_y(const_x.data(), 2, 4);
在https://eigen.tuxfamily.org/dox/unsupported/TensorMap_8h_source.html中,似乎没有构造函数将const作为参数1。