Hello Gora, The 'template<>' thing is compiler version dependent. Current rootcint/makecin t causes warning for new compiler, but if we add 'template<>', we will have error in the old compiler. I think we should keep this behavior until all of supported compiler handles 'template<>'. The other problem, I home Rene or Fons will answer. Thank you Masaharu Goto > >Hello, > I have been having some strange mail problems in sending messages to ROOT >talk and to the ROOT maintainers. What is the canonical address to send >messages to the mailing list? This one is being sent to an address found by >searching for "roottalk" on the Web page. Shouldn't the Majordomo welcome >message that I carefully preserved contain this information? > > I have run into a problem with rootcint in deriving template classes from a >base class. Attached to these messages are the following files containing a >trivial example that reproduces the problem: > classA.cxx, classA.h Base template class > classALinkDef.h rootcint LinkDef file for classA > classB.cxx, classB.h Template class derived from classA > classBLinkDef.h rootcint LinkDef file for classB > Makefile simple Makefile for all programs >You can try compiling these simply by typing 'make' at a Linux command prompt . >I am using ROOT v2.23 on a Linux box (Suse 6.2, kernel 2.2.10) with g++ 2.95.1. >Here are the g++ warnings and errors that I get: >classADict.cxx:22: warning: explicit specialization not preceded by `template <>' >classADict.cxx:34: warning: explicit specialization not preceded by `template <>' >classADict.cxx:44: warning: explicit specialization not preceded by `template <>' >... > >classBDict.cxx:31: warning: explicit specialization not preceded by `template <>' >classBDict.cxx:45: warning: explicit specialization not preceded by `template <>' >classBDict.cxx:56: warning: explicit specialization not preceded by `template <>' >classBDict.cxx:66: warning: explicit specialization not preceded by `template <>' >classBDict.cxx:66: specialization of TClassA<int>::Streamer(TBuffer &) after instantiation >classBDict.cxx:66: explicit specialization of TClassA<int>::Streamer(TBuffer &) after first use >classBDict.cxx:78: warning: explicit specialization not preceded by `template <>' >classBDict.cxx:78: specialization of TClassA<int>::ShowMembers(TMemberInspector &, char *) after instantiation >classBDict.cxx:78: explicit specialization of TClassA<int>::ShowMembers(TMemberInspector &, char *) after first use >classBDict.cxx:88: warning: explicit specialization not preceded by `template <>' >make: *** [all] Error 1 > >The warnings can be fixed by adding "template <>" before the appropriate >functions. The error results from TClassA<int>::Streamer() being used before >it is defined, and can be fixed by moving the TClassB<int>::Streamer() >definition to after the TClassA<int>::Streamer() definition. It would be nice >if rootcint would do these automatically. Thanks in advance. > >Regards, >Gora >
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:24 MET