[ROOT] template function and dictionnary generation problem

From: Benoit Revenu (revenu@iap.fr)
Date: Wed Mar 19 2003 - 10:34:37 MET


SAME MAIL AS BEFORE BUT WITH A SUBJECT


Dear rooters,

I'm trying to use omanip in a header file where I define a class which 
will be in a dictionnary.

One of the functions defined in this file is:
=============================================
inline omanip<int> space(int Spacing)
{
  return omanip<int>(space,Spacing);
};


The class defined is A and the LinkDef is simply
... (usual stuff)
#pragma link C++ class A;

#endif


The result of the compilation is :
Error: no such template omanip<int> FILE:../src/Class.h LINE:14
Warning: Error occured during reading source files
Warning: Error occured during dictionary source generation
!!!Removing RootDict.cc RootDict.h !!!


A solution is to put the "space" function between 
#ifndef __CINT__
inline omanip<int> space(int Spacing)
{
  return omanip<int>(space,Spacing);  
};
#endif

and I would like to understand why ! And I would like to avoid to put 
everywhere #ifndef __CINT__.....

In attachement, there is a tar file containing :
Class.h (32lines)
Class.cc (7lines)
LinkDef.h (10 lines)
analyse.cc (9 lines), a stupid test





This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET