Currently, SelfAdjointEigenSolver::compute() takes a matrix by const reference. It then copies this matrix (or, rather, a lower triangular view of it if not using MKL) to m_eivec, and operates only on m_eivec throughout the remainder of the calculation. This is suboptimal, as it means that the original matrix must be stored in memory for the duration of the calculation, even if it is to be thrown away immediately afterward. If SelfAdjointEigenSolver were to support C++11 move semantics, the user could avoid this inefficiency, saving nearly a factor of two on the amount of memory needed to diagonalize a matrix.
Patch welcome. Note that we already have the macro EIGEN_HAVE_RVALUE_REFERENCES to detect whether rvalue references can be used.
-- GitLab Migration Automatic Message -- This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/865.