提问人:user2129053 提问时间:8/8/2023 最后编辑:prapinuser2129053 更新时间:8/8/2023 访问量:54
Eigen 与在另一个(模板)类中使用“auto”的运算符之间的冲突
Conflict between Eigen and operator that uses ‘auto’ in another (template) class
问:
我有一个名为“Variable.h”的模板类,它是所有程序变量的基础。 添加 Eigen 处理矩阵计算后,每次编译程序时,都会出现一系列错误,看起来像是算子重载、自动算子和 Eigen 之间的冲突。 我只在 Linux 中得到错误,在 Windows 中它可以正常编译(我刚刚开始使用 Linux)。 我正在使用 C++17 和 g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 版本
以下是错误和它指责为错误的一行
Variable.h: In instantiation of ‘auto operator<=(T, U) [with T = Eigen::internal::unpacket_traits<__vector(2) double>::<unnamed enum>; U = int]’:
Variable.h:290:80: required from ‘auto operator>=(T, U) [with T = int; U = Eigen::internal::unpacket_traits<__vector(2) double>::<unnamed enum>]’
Eigen/src/Core/Matrix.h:30:115: required from ‘struct Eigen::internal::traits<Eigen::Matrix<double, 3, 3> >’
Eigen/src/Core/PlainObjectBase.h:98:7: required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 3> >’
Eigen/src/Core/Matrix.h:178:7: required from ‘class Eigen::Matrix<double, 3, 3>’
SoilOrganicMatter.h:499:19: required from here
Variable.h:291:80: error: use of ‘auto operator>=(T, U) [with T = int; U = Eigen::internal::unpacket_traits<__vector(2) double>::<unnamed enum>]’ before deduction of ‘auto’
291 | T, typename U> auto operator <= (T lhs, U rhs) { return rhs >= lhs; };
|
Variable.h,第 290 行和第 291 行
template <typename T, typename U> auto operator >= (T lhs, U rhs) { return rhs <= lhs; };
template <typename T, typename U> auto operator <= (T lhs, U rhs) { return rhs >= lhs; };
SoilOrganicMatter.h 第 499 行
Eigen::Matrix3d carbonPart;
如果我注释重载运算符,我会摆脱错误,这似乎没问题,但我没有编写这个类,所以我不知道它通过程序产生的所有影响。
有人可以帮我找出问题所在,或者找到任何线索吗?
答: 暂无答案
评论
<=
>=