Opened 5 years ago
Last modified 5 years ago
#13021 new Bugs
Odeint: Eigen upgrade to v 3.3.3 breaks compatibility
Reported by: | Owned by: | karsten | |
---|---|---|---|
Milestone: | To Be Determined | Component: | odeint |
Version: | Boost 1.64.0 | Severity: | Problem |
Keywords: | odeint eigen include | Cc: |
Description
In order to combine odeint with the Eigen library I use, among other things, #include "boost/numeric/odeint/external/eigen/eigen.hpp"
This used to work perfectly with Eigen version 3.2 , but fails after an upgrade of the Eigen libraries to version 3.3.3. The code does not compile, generating a large amount of error messages, beginning with:
In file included from /usr/include/boost/numeric/odeint/external/eigen/eigen.hpp:22:0, from minimal.cpp:3: /usr/include/boost/numeric/odeint/external/eigen/eigen_algebra.hpp:35:37: error: ‘scalar_add_op’ in namespace ‘Eigen::internal’ does not name a template type (...)
A minimal reproducible example is:
#include <Eigen/Dense> #include <boost/numeric/odeint.hpp> #include "boost/numeric/odeint/external/eigen/eigen.hpp" int main() {}
This code does not compile with Eigen 3.3.3. The only functioning workaround I found was downgrading to Eigen 3.3.2.
I noticed the problem while using Boost version 1.58.0, ubuntu 16.04, g++ version 5.4.0. Upgraded to Boost version 1.64.0; to no avail. The error messages differ after the Boost upgrade but the problem persists.
Change History (2)
comment:1 by , 5 years ago
comment:2 by , 5 years ago
Component: | None → odeint |
---|---|
Owner: | set to |
My apologies for a mistake that I just noticed concerning the version number: The workaround consisted in downgrading the Eigen library to version 3.2, and not to 3.3.2, as erroneously stated in the ticket. Perhaps an admin could edit and correct this in the ticket to avoid (further) confusion. Thanks in advance for your help.