On 05.10.2016 10:16, Richard B. Kreckel wrote:
Hi,
On 10/05/2016 12:08 AM, Richard B. Kreckel wrote:
I will do a release 1.7.2 these days with just this fixed.
No, wait!
The function 'method virtual GiNaC::ex GiNaC::pointer_to_map_function_1arg<const GiNaC::ex&>::operator()(const GiNaC::ex&)' removed from the ABI is this template class method operator() declared in <ginac/ex.h>:
template<class T1> class pointer_to_map_function_1arg : public map_function { protected: ex (*ptr)(const ex &, T1); T1 arg1; public: explicit pointer_to_map_function_1arg(ex x(const ex &, T1), T1 a1) : ptr(x), arg1(a1) {} ex operator()(const ex & e) override { return ptr(e, arg1); } //!!! };
What happend is that a GiNaC-internal static function has stopped using a pointer_to_map_function_1arg<const GiNaC::ex&> object.
Please correct me if I'm wrong, but I suppose that any program/library linked against GiNaC will have to get its own copy of that method at compile time. And that makes this *not* an ABI breakage, right?
-richy.
Hi Richy, you're correct, and we've tested your hypothesis: If I use the removed function in some test code, it will show up in its symbol table, even with the 1.7.1 release; just as you expected. So 1.7.1 doesn't break ABI compatibility and there is no need for a 1.7.2. release. Thank you for your help in figuring this out! Kind regards, Till