Ralf, Thanks for reporting this problem. A fix from Philippe is now in CVS. Rene Brun Ralf Ehrlich wrote: > > Hello! > > I tried to compile the following code with the new ROOT version 4.00/03: > > ======================================================= > STLMapStoragePolicy.h > ------------------------------------------------------- > #ifndef STLMAPPOLICY_H > #define STLMAPPOLICY_H > > #include <string> > #include <map> > > using namespace std; > template <class ElementType> class STLMapStoragePolicy > { > public: > typedef string KeyType; > typedef map<KeyType,ElementType> map_type; > > private: > map_type map_; > }; > > #endif > > ======================================================= > Track.h > ------------------------------------------------------- > #include "STLMapStoragePolicy.h" > #include <TObject.h> > > class Track : public STLMapStoragePolicy<int> > { > public: > Track() {;} > virtual ~Track() {;} > > ClassDef(Track,1); > }; > > ======================================================= > LinkDef.h > ------------------------------------------------------- > #ifdef __CINT__ > > #pragma link C++ class Track+; > #pragma link C++ class STLMapStoragePolicy<int>+; > > #endif > > ======================================================= > Makefile > ------------------------------------------------------- > libdataclasses.so: dataclassesDict.o > g++ -shared -O dataclassesDict.o -o libdataclasses.so > $(EXPLLINKLIBS) > @echo "libdataclasses.so done" > > dataclassesDict.o: dataclassesDict.cxx > @echo "Generating dataclassesDict.o..." > g++ -O -Wall -fPIC $(shell root-config --cflags) -c > dataclassesDict.cxx > > dataclassesDict.cxx: > @echo "Generating dictionary dataclassesDict.cxx..." > @rootcint -f dataclassesDict.cxx -c STLMapStoragePolicy.h Track.h > LinkDef.h > > ======================================================= > > This leads to the error message: > > Generating dictionary dataclassesDict.cxx... > Error: Too many template arguments FILE: LINE:0 > rootcint: utils/src/RStl.cxx:222: void ROOT::RStl::WriteStreamer(FILE*, > G__ClassInfo&): Assertion `0' failed. > make: *** [dataclassesDict.cxx] Aborted (core dumped) > make: *** Deleting file `dataclassesDict.cxx' > > I have tried the same code with ROOT version 3.10 and it compiled it > without error. > > A way around it for version 4.00 is replacing > map_type map_; by map<string,ElementType> map_; > in the private part of STLMapStoragePolicy. > The same problem occurs with STL vectors. > > What is the reason for this behavior? > > Thanks for looking. > Ralf
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET