RE: [ROOT] rootcint and vector<pair<> >

From: Philippe Canal (pcanal@fnal.gov)
Date: Wed Dec 19 2001 - 23:54:59 MET


Hi Richard,

I found and fixed the problem.  The cvs repository should be updated soon with
the fix.

The issue appear only when the argument to pair does not have a space in its
name.  For example 'unsigned int' or 'unsigned char' (i.e. Bool_t) do work
while int and char does not work in your context.

Philippe.

-----Original Message-----
From: owner-roottalk@pcroot.cern.ch
[mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Richard S. Holmes
Sent: Wednesday, December 19, 2001 11:19 AM
To: roottalk@pcroot.cern.ch
Subject: [ROOT] rootcint and vector<pair<> >


I found reports of a similar problem to the following in the archives
(thread starting at
<http://root.cern.ch/root/roottalk/roottalk01/2987.html>) but it was not
clear to me whether or how it had been resolved.

It appears rootcint has trouble with member functions that return
vector<pair<> > (or a pointer thereto).  Specifically, if I have a class
header containing

  vector<pair<Int_t,double> >* Bar() const;

rootcint fails with error

    Error: No symbol pair<int in current scope 
FILE:/cern/root/cint/lib/prec_stl/vector LINE:105

Similar errors occur if Bar returns vector<pair<WHATEVER,double> >*
where WHATEVER is bool, bool*, unsigned, int, double, or Double_t. 
Curiously enough, rootcint does NOT throw an error if WHATEVER is
Bool_t, Bool_t*, UInt_t, or size_t.  I didn't vary the second template
argument much, but using Double_t seems to make no difference.

I am using ROOT 3.02/06, CINT 5.15.21, Red Hat 6.2.  Code samples,
Makefile, and more detailed description of the problem may be found in
an archive at <http://mepserv.phy.syr.edu/~rsholmes/foo.tar.gz>.

-- 
Richard S. Holmes, Research Assistant Professor
Physics Department, Syracuse University
Syracuse, NY 13244
(315) 443-5977



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:12 MET