[ROOT] rootcint-generated dictionary incompatible with gcc 3.4

From: John Pretz (pretz@icecube.umd.edu)
Date: Mon Dec 13 2004 - 03:15:32 MET


Whasssup roottalk!

I'm having trouble compiling the attached code with gcc 3.4.  I'm 
running Fedora Core 3, root 4.00.08f.

You can look at the attached example.  It involves a template inheriting 
from its template paramters.

The attached example just builds the dictionary using rootcint, then 
attempts to compile the dictionary.  The compilation succeeds under gcc 
3.2 (RHEL) and fails under gcc 3.4

If you take a look at the link of the Dict.cxx that's failing to 
compile, it looks like:
TClass *Template<ClassA,ClassB,ClassC>::fgIsA = 0;  // static to hold 
class pointer

In updating my own code to gcc 3.4, I've had to change lines like this 
to look like:
template <>
TClass *Template<ClassA,ClassB,ClassC>::fgIsA = 0;  // static to hold 
class pointer

Indeed, if I make this one change to the dictionary by hand, the 
dictionary compiles fine.

I have not tried this on my gcc 3.4 box with the dev version of root 
because it's not completely stable on my box.
(cf 
http://root.cern.ch/cgi-bin/print_hit_bold.pl/root/roottalk/roottalk04/3310.html)
but I did try it with the dev version of root on a gcc 3.2 box.  Even 
though the dictionary compiled fine on gcc 3.2, the dictionary contained 
the same line that is a syntax error under gcc 3.4, so I don't think 
this has been fixed even in the dev version of root.

Maybe I'm doing something wrong?

Thanks for looking,

John





This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:10 MET