RE:Error: Can't call ostream::width() in

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Sun Jan 24 1999 - 07:58:35 MET


Pasha,

I think I should add this QA to FAQ.

There are several versions of iostream library support in CINT.

 1) Old ANSI C++ 3.0 iostream version - precompiled
     This is the most common version which is used currently. Following
     platforms use this version.

       Win32    Visual C++, Symantec C++, old Borland C++
       Linux    gcc
       FreeBSD  gcc
       BSDOS    gcc
       HP-UX    CC,aCC,gcc
       Solaris  SUNWspro-CC,gcc
       AIX      xlC,gcc
       SGI      CC,gcc
       AlphaOSF cxx,gcc
       etc...

 2) New template base iostream version - precompiled
     Template base iostream library is still on its' way of completeness.
     Major compilers provides template base iostream library, however, their
     implementation and ANSI/ISO comformance is not uniform. Currently, cint
     only supports template base precompiled iostream library for following
     platform

       Win32    C++ Builder

     Extending this support for other compiler is possible but not easy. 
     Because of inconsistent compiler implementation, I must do some cut&try
     on particular platform.

 3) Fake iostream version - interpreted
     There are a few compilers which precompiled iostream library is not
     supported.

      Linux,HP-UX,SGI,etc...     KAI-CC, egcs

     Those compilers only have template base iostream library. As described
     above, support for template base iostream library is still on the way.
     For these environment, CINT provides fake iostream version which is 
     interpreted. The fake version only supports very basic io functionality.
     No support for library details.


Platforms you have problem with fall into category 3). GSI/EGCS and SGI/KCC.
I'm sorry for inconvenience for the time being. 

Mashaaru Goto

--------------------------------------------------------------------------
Dear ROOT developers, 
        I'm having a problem with rebuilding CINT (and therefore - ROOT) 
in SGI/EGCS-1.1.1 configuration. THe build finishes successfully, however 
the following doesn't work:

/data69/upgrade/root/v2_21_01/GCC_2_8>bin/root -b
  *******************************************
  *                                         *
  *        W E L C O M E  to  R O O T       *
  *                                         *
  *   Version   2.21/01   14 January 1999   *
  *                                         *
  *  You are welcome to visit our Web site  *
  *          http://root.cern.ch            *
  *                                         *
  *******************************************

CINT/ROOT C/C++ Interpreter version 5.13.83, Dec 2 1998
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] cout << setw(10) << 10.345 << endl;
Error: Can't call ostream::width() in current scope FILE:iomanip.h LINE:76
Error: L Illegal operator for real number FILE:/var/tmp/aaaa0078a LINE:1
(class G__CINT_ENDL)273087296
*** Interpreter error recovered ***
root [1] cout << setw(10) << 10 << endl;    
Error: Can't call ostream::width() in current scope FILE:iomanip.h LINE:76
*** Interpreter error recovered ***




The same is happening when I'm trying to invoke bare CINT (the diagnostics is 
the
same for both - EGCS-1.1.1 and KCC-3.3 - versions) :





/data69/upgrade/root/v2_21_03/GCC_2_8>bin/cint

cint : C/C++ interpreter
   Copyright(c) : 1991~1996 [hp] Hewlett-Packard-Japan
   Author       : Masaharu Goto (gotom@jpn.hp.com)
   Copyright(c) : 1995~1998 Masaharu Goto (MXJ02154@niftyserve.or.jp)
   revision     : 5.13.87, Jan 8 1999 by M.Goto

No main() function found in given source file. Interactive interface started.
'h' for help, 'q' to quit, '{ statements }' or 'p [expression]' to evaluate

cint> #include <iostream.h>
cint> #include <iomanip.h>
cint> cout << setw(10) << 10.345 << endl;
Error: Can't call ostream::width() in current scope FILE:iomanip.h LINE:76
Possible canditates are...
filename       line:size busy function type and name
Error: L Illegal operator for real number FILE:/var/tmp/caaa000p8 LINE:1
(class G__CINT_ENDL)268571144


The same problem is taking place with SGI/KCC version *ftp-ed from root.cern.c
h*
Funny enough , the SGI/GCC(2.7.2) -compiled version *ftp-ed from root.cern.ch*
 
and
thus - I believe - built on the same platform (cdfsga.fnal.gov) - doesn't have
 
this problem.


I'd greatly appreciate any help,
        thanks a lot, pasha



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:28 MET