egcs-1.0.2-8 Templates

Russell Duke rduke@migaux.cgg.com
Wed Jun 17 02:52:00 GMT 1998


Hi,

I've just upgraded my laptop from Red Hat 5.0 to 5.1 and am having
trouble getting my C+ software to recompile/link.

Under linux I have been using '-fno-implicit-template' to disable
implicit generation of template instances, and explicitly instantiating
all the ones required in a single file.  This worked fine under the old
GNU g++, but always generates an 'Internal compiler error' now that egcs
is used.

It gives an error every time it sees one of these template lines  -

  class GuiKeypadButton;
  template class GuiList<GuiKeypadButton*>;

Saying :

  GuiList.C: In method `GuiList<GuiKeypadButton*>::
                            GuiList(class GuiList<GuiKeypadButton*>&) :
  GuiList.C:95: Internal compiler error
  GuiList.C:95: Please submit a full bug report to ....

How should I instantiate templates using egcs ?

Note relevant files are attached.

Cheers,
Russ Duke.
________________________________________________________________________

Russell Duke
Senior Graphical Programmer
________________________________________________________________________

Compagnie Generale de Geophysique           direct : +44 (0)181-899-2830
CGG House                                   main   : +44 (0)181-899-2400
4 Dukes Green Avenue                        fax    : +44 (0)181-899-2500
Feltham
Middlesex TW14 0LR                          email  : rduke@cgg.com
United Kingdom
________________________________________________________________________

Please note :  The  information  contained  in  this message is strictly
               confidential and for the use of the addressee only.
________________________________________________________________________
/*

********************************************************************************
*                                                                              *
*                     Compagnie Generale de Geophysique                        *
*                                                                              *
******************************* Copyright CGG **********************************

Creation Date   : 21th February 1998

Author          : Russell Duke

Language        : C++

Module(s)       : GuiTemplates

Parent Class    : -

Purpose         : Instigates all the template classes for the gcc compiler...

RCS Details
-----------
$Id: GuiTemplates.C,v 1.3 1998/06/04 11:55:35 duke Exp duke $
$Log: GuiTemplates.C,v $
Revision 1.3  1998/06/04 11:55:35  duke
Added new GuiList<GuiScratchPadMgr*> template class

Revision 1.2  1998/06/03 07:25:32  duke
Subsitute tabs for four spaces

Revision 1.1  1998/04/26 16:32:21  duke
Initial revision

*/
#if defined( LINUX )

#include "GuiMath.h"
#include "GuiIterator.h"
#include "GuiListIterator.C"
#include "GuiList.C"
#include "GuiLookupList.C"
#include "GuiLookupListIterator.C"

#include "MotifTabbedFolder.h"
#include "GuiLinkParameter.h"
#include "GuiString.h"
#include "GuiWidgetDefs.h"

class GuiKeypadButton;
class GuiKeypadParameters;
class GuiParameter;
class GuiProcess;
class Folder;
class GuiWindow;
class GuiMessage;
class GuiData;
class GuiDataLister;
class GuiDataIcon;
class GuiWidget;
class GuiDragSite;
class GuiDropSite;
class GuiDrawData;
class GuiScratchPad;
class GuiScratchPadMgr;
class GuiScales;
class GuiDisplay;

//
// Math functions ...
//

//template int   max<int>   ( int,   int );
//template int   min<int>   ( int,   int );
//template float max<float> ( float, float );
//template float min<float> ( float, float );

//
// listNode ...
//

//template class listNode<GuiString>;

template class listNode<GuiKeypadButton*>;
template class listNode<GuiKeypadParameters*>;
template class listNode<GuiParameter*>;
template class listNode<int>;
template class listNode<float>;
template class listNode<GuiData*>;
template class listNode<GuiLinkParameter::LinkData*>;
template class listNode<MotifTabbedFolder::Folder*>;
template class listNode<GuiWindow*>;
template class listNode<GuiMessage*>;
template class listNode<GuiDataLister*>;
template class listNode<GuiWidget*>;
template class listNode<GuiDragSite*>;
template class listNode<GuiDropSite*>;
template class listNode<GuiDrawData*>;
template class listNode<GuiScratchPad*>;
template class listNode<GuiScratchPadMgr*>;
template class listNode<GuiScales*>;
template class listNode<GuiDisplay*>;

//
// GuiList ...
//

template class GuiList<GuiKeypadButton*>;
template class GuiList<GuiKeypadParameters*>;
template class GuiList<GuiParameter*>;
template class GuiList<int>;
template class GuiList<float>;
template class GuiList<GuiData*>;
template class GuiList<GuiLinkParameter::LinkData*>;
template class GuiList<MotifTabbedFolder::Folder*>;
template class GuiList<GuiWindow*>;
template class GuiList<GuiMessage*>;
template class GuiList<GuiDataLister*>;
template class GuiList<GuiWidget*>;
template class GuiList<GuiDragSite*>;
template class GuiList<GuiDropSite*>;
template class GuiList<GuiDrawData*>;
template class GuiList<GuiScratchPad*>;
template class GuiList<GuiScratchPadMgr*>;
template class GuiList<GuiScales*>;
template class GuiList<GuiDisplay*>;

//
// ListIterators ...
//

template class GuiIterator<int>;
template class GuiIterator<float>;
template class GuiIterator<GuiKeypadParameters*>;
template class GuiIterator<GuiKeypadButton*>;
template class GuiIterator<GuiParameter*>;
template class GuiIterator<GuiLinkParameter::LinkData*>;
template class GuiIterator<GuiData*>;
template class GuiIterator<MotifTabbedFolder::Folder*>;
template class GuiIterator<GuiWindow*>;
template class GuiIterator<GuiMessage*>;
template class GuiIterator<GuiDataLister*>;
template class GuiIterator<GuiWidget*>;
template class GuiIterator<GuiDragSite*>;
template class GuiIterator<GuiDropSite*>;
template class GuiIterator<GuiDrawData*>;
template class GuiIterator<GuiScratchPad*>;
template class GuiIterator<GuiScratchPadMgr*>;
template class GuiIterator<GuiScales*>;
template class GuiIterator<GuiDisplay*>;

template class GuiListIterator<int>;
template class GuiListIterator<float>;
template class GuiListIterator<GuiKeypadParameters*>;
template class GuiListIterator<GuiKeypadButton*>;
template class GuiListIterator<GuiParameter*>;
template class GuiListIterator<GuiLinkParameter::LinkData*>;
template class GuiListIterator<GuiData*>;
template class GuiListIterator<MotifTabbedFolder::Folder*>;
template class GuiListIterator<GuiWindow*>;
template class GuiListIterator<GuiMessage*>;
template class GuiListIterator<GuiDataLister*>;
template class GuiListIterator<GuiWidget*>;
template class GuiListIterator<GuiDragSite*>;
template class GuiListIterator<GuiDropSite*>;
template class GuiListIterator<GuiDrawData*>;
template class GuiListIterator<GuiScratchPad*>;
template class GuiListIterator<GuiScratchPadMgr*>;
template class GuiListIterator<GuiScales*>;
template class GuiListIterator<GuiDisplay*>;

//
// lookupNode ...
//

template class lookupNode<GuiString,GuiProcess*>;
template class lookupNode<GuiString,GuiParameter*>;
template class lookupNode<GuiString,GuiString>;
template class lookupNode<GuiString,unsigned long>;
template class lookupNode<GuiData*,GuiDataIcon*>;
template class lookupNode<GuiCallbackProc,GuiPointer>;
template class lookupNode<GuiDrawData*,GuiScales*>;
template class lookupNode<GuiData*,GuiString*>;
template class lookupNode<GuiCallbackProc, GuiPointer>;

//
// LookupList ...
//

template class GuiLookupList<GuiString,GuiParameter*>;
template class GuiLookupList<GuiString,GuiProcess*>;
template class GuiLookupList<GuiString,GuiString>;
template class GuiLookupList<GuiString,unsigned long>;
template class GuiLookupList<GuiData*,GuiDataIcon*>;
template class GuiLookupList<GuiCallbackProc,GuiPointer>;
template class GuiLookupList<GuiDrawData*,GuiScales*>;
template class GuiLookupList<GuiData*,GuiString*>;
template class GuiLookupList<GuiCallbackProc, GuiPointer>;

template class GuiLookupListIterator<GuiString,GuiParameter*>;
template class GuiLookupListIterator<GuiString,GuiProcess*>;
template class GuiLookupListIterator<GuiString,GuiString>;
template class GuiLookupListIterator<GuiString,unsigned long>;
template class GuiLookupListIterator<GuiData*,GuiDataIcon*>;
template class GuiLookupListIterator<GuiCallbackProc,GuiPointer>;
template class GuiLookupListIterator<GuiDrawData*,GuiScales*>;
template class GuiLookupListIterator<GuiData*,GuiString*>;
template class GuiLookupListIterator<GuiCallbackProc, GuiPointer>;

template class GuiList< lookupNode<GuiString,GuiParameter*>* >;
template class GuiList< lookupNode<GuiString,GuiProcess*>* >;
template class GuiList< lookupNode<GuiString,GuiString>* >;
template class GuiList< lookupNode<GuiString,unsigned long>* >;
template class GuiList< lookupNode<GuiData*,GuiDataIcon*>* >;
template class GuiList< lookupNode<GuiCallbackProc,GuiPointer>* >;
template class GuiList< lookupNode<GuiDrawData*,GuiScales*>* >;
template class GuiList< lookupNode<GuiData*,GuiString*>* >;
template class GuiList< lookupNode<GuiCallbackProc, GuiPointer>* >;

template class listNode< lookupNode<GuiString,GuiParameter*>* >;
template class listNode< lookupNode<GuiString,GuiProcess*>* >;
template class listNode< lookupNode<GuiString,GuiString>* >;
template class listNode< lookupNode<GuiString,unsigned long>* >;
template class listNode< lookupNode<GuiData*,GuiDataIcon*>* >;
template class listNode< lookupNode<GuiCallbackProc,GuiPointer>* >;
template class listNode< lookupNode<GuiDrawData*,GuiScales*>* >;
template class listNode< lookupNode<GuiData*, GuiString*>* >;
template class listNode< lookupNode<GuiCallbackProc, GuiPointer>* >;

template class GuiIterator< lookupNode<GuiString,GuiParameter*>* >;
template class GuiIterator< lookupNode<GuiString,GuiProcess*>* >;
template class GuiIterator< lookupNode<GuiString,GuiString>* >;
template class GuiIterator< lookupNode<GuiString,unsigned long>* >;
template class GuiIterator< lookupNode<GuiData*,GuiDataIcon*>* >;
template class GuiIterator< lookupNode<GuiCallbackProc,GuiPointer>* >;
template class GuiIterator< lookupNode<GuiDrawData*,GuiScales*>* >;
template class GuiIterator< lookupNode<GuiData*,GuiString*>* >;
template class GuiIterator< lookupNode<GuiCallbackProc, GuiPointer>*>;

template class GuiListIterator< lookupNode<GuiString,GuiParameter*>* >;
template class GuiListIterator< lookupNode<GuiString,GuiProcess*>* >;
template class GuiListIterator< lookupNode<GuiString,GuiString>* >;
template class GuiListIterator< lookupNode<GuiString,unsigned long>* >;
template class GuiListIterator< lookupNode<GuiData*,GuiDataIcon*>* >;
template class GuiListIterator< lookupNode<GuiCallbackProc,GuiPointer>* >;
template class GuiListIterator< lookupNode<GuiDrawData*,GuiScales*>* >;
template class GuiListIterator< lookupNode<GuiData*,GuiString*>* >;
template class GuiListIterator< lookupNode<GuiCallbackProc, GuiPointer>* >;

#endif // _linux_


More information about the Gcc-bugs mailing list