Hi Troy, Thanks for reporting these issue. Support for templated constructor and for templated member function returning a reference (or pointer) not via a typedef will be uploaded in CVS shortly (i.e. all your example will work). Cheers, Philippe. -----Original Message----- From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Troy D. Straszheim Sent: Tuesday, May 11, 2004 6:59 AM To: roottalk@pcroot.cern.ch Subject: [ROOT] Templated constructors and assigment operators of template class Hi roottalk- I've upgraded to root 4.00.04 and am really impressed with how much progress has occurred recently with support for templates. In fact, I have succeeded in creating a configuration header for the "boost" libraries which rootcint is capable of parsing (at least on my platform, (gcc 3.3.2). I plan to make this available once I have confirmed which parts of the boost libraries are usable. My first goal is the shared_ptr<>. I have verified that basic functionality of the boost shared_ptr<> works in the interpreter. The issues that remain are the following: A little while ago I requested (and got) a bugfix (could not instrument a templated constructor) and this now appears to work fine. However I am unable to instrument a templated constructor in a *template* class. I have also discovered that, within a template class, functions that return something of the form "MyClass&" must have that return value type typedeffed in order for them to compile and instrument correctly. This applies also to operators, which is where I originally discovered it. template <class T> class A { public: template <class U> A(const U&); // rootcint doesnt find this typedef A& reference; template <class U> reference operator=(const U&); // rootcint finds this version ok template <class U> A& operator=(const U&); // it can't find this version } I have attached a fairly extensive test case, and as far as I can tell these are the only two issues. The test case also contains a lot of things that do work correctly for the sake of thoroughness. The generated file macro.C contains the things that work in the interpreter, the file main.cxx contains a couple extras that do not. Thanks, as always, for your help, Troy Straszheim
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET