Update of /home/cvs/GiNaC/ginac
Added Files: symmetry.cpp symmetry.h Log Message: introduced new class for constructing symmetry tree definitions
This patch entirely breaks ginaccint! An analysis shows that along with a funny new bug it triggers four long-standing, many times reported and never truly fixed problems in Cint: 1) failure to recognize `unsigned' as `unsigned int', 2) occassional ommission of namespace qualifiers in generated G__cpp_foobar.C, 3) the whole std-container<..., malloc_alloc> disaster and 4) not standard-conforming *ancient* HP-derived STL. (*) The problem was isolated and reported but I don't hold my breath on this. I wonder how the Cern folks can be so proud of this product and I am now quite happy that we made the decision to separate ginaccint out of GiNaC. It only holds up development. I can hear Fermilab C++-hocho Walter Brown's upset voice: "If you have something that's broken, you either fix it or you throw it away!". Happy hacking -richy. (*) As an aside, I am under the impression that you can easily detect HP-derived headers on a compiler by triggering this bug: #include <list.h> struct foo { list<foo> children; }; Incidentally, Micro$oft VC++-6.0 doesn't eat it for the same reason the HP-STL doesn't eat it. It's amazing how many compilers barf at this seemingly innocent piece of code and when you look at the list header you almost certainly find that it was forked from STL before it's development went over to SGI. -- Richard Kreckel <Richard.Kreckel@Uni-Mainz.DE> <http://wwwthep.physik.uni-mainz.de/~kreckel/>
Hi! On Tue, Jun 19, 2001 at 12:41:04PM +0200, Richard B. Kreckel wrote:
1) failure to recognize `unsigned' as `unsigned int',
This is used in many places in GiNaC. Why has it not been a problem before?
#include <list.h> struct foo { list<foo> children; };
This is supposed to work? Methinks that to make a list<foo>, the compiler would need to know at least sizeof(foo) which it can't because the struct definition is not closed yet. Bye, Christian -- / Coding on PowerPC and proud of it \/ http://www.uni-mainz.de/~bauec002/
On Tue, 19 Jun 2001, Christian Bauer wrote:
On Tue, Jun 19, 2001 at 12:41:04PM +0200, Richard B. Kreckel wrote:
1) failure to recognize `unsigned' as `unsigned int',
This is used in many places in GiNaC. Why has it not been a problem before?
It is a problem sometimes, then again it is not, then it is a warning... I don't know.
#include <list.h> struct foo { list<foo> children; };
This is supposed to work? Methinks that to make a list<foo>, the compiler would need to know at least sizeof(foo) which it can't because the struct definition is not closed yet.
Nonsense. It's heavily used for building up all sorts of trees where it really becomes convenient. BTW, on those compilers plagued by the abovementioned problem `struct foo { vector<foo> children; };' works like a charm but according to your reasoning it would be a problem as well. Regards -richy. -- Richard Kreckel <Richard.Kreckel@Uni-Mainz.DE> <http://wwwthep.physik.uni-mainz.de/~kreckel/>
participants (2)
-
Christian Bauer
-
Richard B. Kreckel