Closed arkanoid87 closed 3 years ago
(sorry edited answer, bad patch) This issue is better solved in meddly itself probably. See this solution for instance : https://github.com/yanntm/SOURCES/commit/05ca770e978bc259967043ba43d297b162400891
The problem is there are two conversions to fit to the declarations available, one of which loses precision. And it's across references so building temporaries is not possible.
This was caused by a change in the Meddly library which modified the declaration of evaluate
to MEDDLY::forest::evaluate(const dd_edge &f, const int* vl, long &t)
. The argument t
which is causing the compilation error has been converted to long
in the function prototype (see Meddly/src/forest.cc:415
).
I've committed a fix changing int &idm
to long &idm
, which shouldn't have noticeable consequences. Thank you!
Edit: Since the solution adopted seems to cause issue on different platforms (notably the GreatSPN VM) I've adopted a template-based approach to let the compiler optimize out the different precisions and binding temporaries to a ref lvalue is not an issue anymore.
[YACC] WN/TRANSL/wn_grammar.y [CC] objects/RGMEDD2/WN/TRANSL/wn_grammar.y.c [LEX] WN/TRANSL/wn.l [CC] objects/RGMEDD2/WN/TRANSL/wn.l.c [C++] WN/SOURCE/SHARED/mainMEDD2.cpp In file included from WN/SOURCE/SHARED/mainMEDD2.cpp:12: WN/SOURCE/SHARED/../RGMEDD2/rgmedd2.h:563:18: error: no matching member function for call to 'evaluate' fEV->evaluate((*indexrs), plmark, idm);