ROOT not usable together with STL?

Walter Karig (W.Karig@gsi.de)
Thu, 24 Apr 97 16:12:44 +0200


We use classes from the Standard Template Library (STL) and want to use
them together with ROOT.

1st Problem: The `ClassImp' macro doesn't work with template classes.

2nd Problem: `rootcint' doesn't work with STL, e.g. `list.h' from GNU,
HP and SGI.

Any plan to fix this in future?

Walter Karig

------------

This is a header file to test rootcint with `list.h' from the STL:

// Test.cc:

#include <list.h>
#include "Rtypes.h"

class Test {
private:
list<int> li; // int list
public:
Test();
~Test();
ClassDef(Test,0) // test class
};
// EOF

I'm trying to generate Streamer(), ... with rootcint:

$ rootcint TestCint.cc -c Test.h
Error: source file "list.h" cannot open FILE:Test.h LINE:4

The `#include <list.h>' is in LINE:3, but anyway,
there is no list.h in $ROOTSYS/cint/include. Now I'm trying:

$ rootcint TestCint.cc -c -I/usr/gnu/lib/g++-include Test.h
Limitation: can not handle macro __PTRDIFF_TYPE__ longint Use +P or -p option
FILE:/usr/gnu/lib/g++-include/_G_config.h LINE:21

Where is the documentation for such options? `+P' produces:
Error: source file "-I/cern/root/v1.00/include" cannot open FILE: LINE:0
Next try:

$ rootcint TestCint.cc -p -c -I/usr/gnu/lib/g++-include Test.h
Internal Error: malloc failed for _IO_stdin_
FILE:/usr/gnu/lib/g++-include/libio.h LINE:208

`libio.h' was included from /usr/gnu/lib/g++-include/streambuf.h.
So last hope: include streambuf.h from $ROOTSYS/cint/include:

$ rootcint TestCint.cc -p -c -I$ROOTSYS/cint/include -I/usr/gnu/lib/g++-include
Test.h
Error: Unexpected EOF G__fgetstream():2 FILE:Test.h LINE:737 ... (10 times)
Error: Unexpected EOF G__fgetc() FILE:Test.h LINE:737

Rootcint produces similar errors with original HP STL and SGI Implementation.

+-----------------------------------------------------------------------------+
| Walter Karig | Gesellschaft fuer Schwerionenforschung |
| Phone: 0049-6159-71-2147 | Planckstrasse 1 |
| E-Mail: W.Karig@gsi.de | D-64291 Darmstadt |
+-----------------------------------------------------------------------------+