On Fri, 29 Sep 2000, Karl Nelson wrote:
> >
> > Hello,
> >
> > While compiling LyX in fussy mode of compaq cxx (std strict_ansi -w0),
> > the following warnings got printed:
>
> > | cxx: Info: ../sigc++/basic_signal.h, line 139: destructor for base
> > | class "SigC::Signal_" is not virtual (D:basclsnondto)
> > | detected during instantiation of class "SigC::Signal0<void, Marsh
> > >
> > | [with Marsh=SigC::Marshal<void>]" at line 76 of
> > | "../../lyx-devel/src/insets/inseterror.h"
> > | :public Signal_
> > | ----------^
>
> I think your compiler is incorrect on issuing thos warnings. Virtual is only
> required in the case where the derived class adds additional work such that
> distroying the base class won't handle destruction of the derivved class.
Then again when you write the code you have no idea what weird things
someone might derive from it. Certainly within libsigc++'s codebase you
know how it's being used.
> Adding a virtual makes handles and signals virtual and thus requires
> the compiler to implement typenodes and virtual tables for
> what is intended to be a trivial class. This will bloat out the
> the library considerable.
How much is considerably?
> Since this was actually the intended behavior is there any way to
> override the warning?
The compiler warning flag that was used isn't used for our standard
compilation with that compiler and is just a --be-extremely-picky flag
used for testing.
Allan. (ARRae)