Я хочу переместить (или поменять местами) массив типа Eigen::ArrayXXd на Eigen::MatrixXd. Чтобы добиться этого, я попытался,
#include <iostream>
#include <Eigen/Dense>
using namespace std;
int main(int , char** ) {
Eigen::ArrayXXd array(100,100);
auto mat2 = std::move(mat.matrix());
cout << array.size() << endl;
cout << mat.size() << endl;
}
Вывод показывает, что оба размера равны 10000, что означает, что массив был скопирован. Чтобы избежать копирования, я также пытался,
Eigen::MatrixXd mat;
mat.swap(array.matrix()); (runtime error assert failure)
// swap(array.matrix(), mat); (compile error)
Я тестировал версию Eigen 3.2.0 beta1 и использовал gcc 4.8.0. Из эксперимента кажется, что семантика перемещения для матриц и массивов еще не реализована. Это правильно?
Есть ли способ безопасного перемещения (без копирования)?