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