BUG when initializing with a 'const' with SGI C++ 2.0

Jeff Carey jeff at contex.UUCP
Sat Mar 16 08:42:34 AEST 1991


I am using:

System release:		IRIX Release 4D1-3.3.1
C++ release:		S4-C++-2.0
Software Option:	C++ Translator Version 2.0

on a Silicon Graphics PI.

Here is some code that illustrates a bug that I ran into recently.
The bug has to do with "some_const" being a 'const'; the bug
disappears when "some_const" is a '#define' macro.

---------------------- beginning of test.c++ code ----------------------------

#define BUG 1
#if BUG
const int some_const = 0;
#else
#define some_const 0
#endif

class V { public: V(); V(int); };

class A : virtual public V { public: A(int); };

class B { public: B(int); };

class C : public A, public B { public: C() : V(0), A(some_const), B(0) {} };

----------------------------- end of test code -------------------------------

The code does not compile when "some_const" is a 'const'.

Ouch ---
jeff

p.s.
IMPORTANT NOTE:
I assume the SGI (AT&T) bug fixers know that currently this compiler
will not accept a 'virtual base class' unless it has a 'default
initializer' declared; this is strange, because you can get around
having to actually define the function in most (all) cases -- just
declare it ?!!!  By the way, this is why I have "V::V()" declared
above; ideally, I would not have had it there.

UNIX System V AT&T C++ Language System Release 2.0, Product Reference
Manual, Select Code 307-146, section 12.6.2, p. 82, states that, and
I paraphrase, "virtual base classes must have a default constructor
or no constructor [only] if the constructor of a most derived class does
not specify a mem-initializer for a virtual base class."

I know the ARM talks about this too, but I didn't take the time to look
it up, sorry.

Geez ---
jeff
-- 
------------------------
Jeff Carey
contex!jeff at uunet.uu.net



More information about the Comp.sys.sgi mailing list