Eigen 3.3.7中1x5矩阵大括号初始化报错,1x4正常,求解释
Eigen 3.3.7大括号初始化矩阵的版本兼容性问题
问题现象
使用gcc 9.4.0和Eigen 3.3.7时,以下代码可正常编译:
#include <Eigen/Dense> int main(int Argc, char *Argv[]) { Eigen::Matrix<int, 1, 4> d = {1, 2, 3, 4}; }
但将矩阵长度增加到5(定义1x5矩阵)时,触发编译错误:
#include <Eigen/Dense> int main(int Argc, char *Argv[]) { Eigen::Matrix<int, 1, 5> d = {1, 2, 3, 4, 5}; }
编译报错信息如下:
foo.cpp:6:48: error: could not convert ‘{1, 2, 3, 4, 5}’ from ‘
’ to ‘Eigen::Matrix<int, 1, 5>’
6 | Eigen::Matrix<int, 1, 5> d = {1, 2, 3, 4, 5};
| ^
| |
|
注:报错代码直接复制自Eigen官方教程页面。
问题说明与更新
- 更新1:经确认这是Eigen库的版本兼容性问题,已提交bug报告。
- 更新2:Eigen 3.3版本仅支持最多4个元素的大括号直接初始化,Eigen 3.4及以上版本才支持任意长度的通用大括号初始化。Mint发行版预装的是Eigen 3.3版本(尽管该发行版发布时间晚于Eigen 3.4),但Eigen官方文档已更新至3.4版本,导致教程中的代码在旧版本库上无法编译。
内容的提问来源于stack exchange,提问作者John Barrabas
相关产品推荐
相关产品推荐

