Hi,
I am testing a software based on ROOT with SLC5 and gcc 4.3.
I get a lot of errors within the Dictionary when I have “friend inline” methods (in a template context), such as
template<typename ScalarType>
class MonitorObjectScalar: public MonitorObject {
// <SNIP>
friend inline ScalarType Value(const MonitorObjectScalar<ScalarType>& rhs) { return(rhs.fVal); };
This produces the errors :
[code]CoreDict.cpp: In function ‘int G__CoreDict_147_0_3(G__value*, const char*, G__param*, int)’:
CoreDict.cpp:3581: error: no matching function for call to ‘Value(amore::core::MonitorObjectScalar&)’
CoreDict.cpp: In function ‘int G__CoreDict_147_0_16(G__value*, const char*, G__param*, int)’:
CoreDict.cpp:3691: error: no matching function for call to ‘Value(amore::core::MonitorObjectScalar&)’
It continues like that…[/code]
And the line 3581 of the Dictionary is
static int G__CoreDict_147_0_3(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
{
G__letint(result7, 99, (long) amore::core::Value(*(amore::core::MonitorObjectScalar<char>*) libp->para[0].ref)); // line 3581 !!!
return(1 || funcname || hash || result7 || libp) ;
}
I didn’t change anything in my code and it works fine with gcc 3.4. It does that for all the “friend inline” methods.
Do you have any idea why it doesn’t work ? or any clue on what I am doing wrong ?
Thanks in advance
Barth