对Eigen对象的自动引用不是使用GCC编译,而是使用MSVC编译

时间:2019-03-17 11:43:34

标签: c++ c++11 gcc visual-c++ eigen

我想使用对本征矩阵块的自动引用:

domain="[('tag_ids', '=', x_zoho_tags.tag_id)]

如果引用不是恒定的,则MSVC可以编译并运行良好,而GCC则不能编译。参见示例here

来自GCC的错误是

MatrixXf a = MatrixXf::Random(20,20);
auto& a_block = a.block(2, 3, 4, 5);

这是一个错误还是应该是预期的行为? GCC是否有一个优雅的解决方法?

以下是可复制示例的链接代码(用于归档):

[x86-64 gcc 8.3 #2] error: cannot bind non-const lvalue reference of type 'Eigen::Block<Eigen::Matrix<float, -1, -1>, -1, -1, false>&' to an rvalue of type 'Eigen::DenseBase<Eigen::Matrix<float, -1, -1> >::FixedBlockXpr<-1, -1>::Type' {aka 'Eigen::Block<Eigen::Matrix<float, -1, -1>, -1, -1, false>'}

0 个答案:

没有答案