[eigen] Assignment to a TensorRef<Tensor<std::complex<float>, 2>>?

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Hello,

 

I would like to take a function that takes a TensorRef<Tensor<std::complex<float>, 2>> as an argument (I will be passing in a .chip() from a 3D tensor).

 

However, this gives me the following error (where `output` is the TensorRef variable):

 

[build] ../redacted.cpp:XXX:XX: error: no viable overloaded '='

[build]       output(i, j) = other_tensor(x, y, z);

[build]       ~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~

[build] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/complex:324:28: note: candidate function (the implicit copy assignment operator) not viable: 'this' argument has type 'const Eigen::TensorRef<Eigen::Tensor<std::__1::complex<float>, 2, 0, long> >::Scalar' (aka 'const std::__1::complex<float>'), but method is not marked const

[build] class _LIBCPP_TEMPLATE_VIS complex<float>

[build]                            ^

[build] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/complex:351:60: note: candidate function template not viable: 'this' argument has type 'const Eigen::TensorRef<Eigen::Tensor<std::__1::complex<float>, 2, 0, long> >::Scalar' (aka 'const std::__1::complex<float>'), but method is not marked const

[build]     template<class _Xp> _LIBCPP_INLINE_VISIBILITY complex& operator= (const complex<_Xp>& __c)

[build]                                                            ^

[build] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/complex:324:28: note: candidate function (the implicit move assignment operator) not viable: 'this' argument has type 'const Eigen::TensorRef<Eigen::Tensor<std::__1::complex<float>, 2, 0, long> >::Scalar' (aka 'const std::__1::complex<float>'), but method is not marked const

[build] class _LIBCPP_TEMPLATE_VIS complex<float>

[build]                            ^

[build] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/complex:344:40: note: candidate function not viable: 'this' argument has type 'const Eigen::TensorRef<Eigen::Tensor<std::__1::complex<float>, 2, 0, long> >::Scalar' (aka 'const std::__1::complex<float>'), but method is not marked const

[build]     _LIBCPP_INLINE_VISIBILITY complex& operator= (float __re)

 

It looks to me like the compiler is only picking up the const version of the coefficient access, rather than the non-const one. Is there something I can do to push it in the right direction?

This is with an up-to-date version of Apple Clang and Eigen master branch.

 

Best wishes,

Toby



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/