5
我试图返回一个矩阵块作为函数的左值。比方说我的函数看起来像这样:本征库:返回一个函数中的矩阵块作为左值
Block<Derived> getBlock(MatrixXd & m, int i, int j, int row, int column)
{
return m.block(i,j,row,column);
}
事实证明,似乎C++编译器明白块()操作符提供了只是暂时的价值,所以返回它作为一个左值是由编译器禁止。然而,在Eigen文档中有一些例子,我们可以使用Eigen作为左值(http://eigen.tuxfamily.org/dox/TutorialBlockOperations.html#TutorialBlockOperationsUsing),所以我想知道我们怎么能不能用同样的功能返回。
a.block(0,0,2,3) = a.block(2,1,2,3);
谢谢!
感谢表达式模板,block()实际上并不返回一个复制块,而只是返回表达式 –
@ user3183610,所以如何强制一个块(表达式)进行评估。我的意思是作为一个有效的左值。 – stanleyerror