ベクトルを取得して変更する関数があります。この関数に matrix_row インスタンスを渡すにはどうすればよいですか? コピー操作はしたくない
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <boost/numeric/ublas/vector.hpp>
using namespace boost::numeric::ublas;
void useMatrixRow(matrix_row<matrix<double> >& mRow) {
// ...
}
void useConstVector(const vector<double>& v) {
// ...
}
void useVector(vector<double>& v) {
// ...
}
void useMatrix(matrix<double>& m) {
matrix_row<matrix<double> > mRow(m, 0);
useMatrixRow(mRow); // works
useConstVector(mRow); // works
// useVector(mRow); // doesn't work
}
useVector(mRow) 式のコメントを外すと、次のようになります。
error: invalid initialization of reference of type 'boost::numeric::ublas::vector<double>&' from expression of type 'boost::numeric::ublas::matrix_row<boost::numeric::ublas::matrix<double> >'
src/PythonWrapper.cpp:60:6: error: in passing argument 1 of 'void useVector(boost::numeric::ublas::vector<double>&)'