http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50383
--- Comment #6 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2011-09-15 21:39:06 UTC --- Still further reduction: class Resource { }; class BaseReference { }; template < class interface_type > class Reference:public BaseReference { public: void *operator new (int nSize) { } Reference (const BaseReference & rRef); }; class Exception; class XInterface; class OutputDevice:public Resource { }; class Window:public OutputDevice { }; class SystemWindow:public Window { }; class Dialog:public SystemWindow { }; class ModalDialog:public Dialog { }; class TabPage:public Window { }; class SvListEntry; class SvLBoxEntry; class XPropertySet; class XFormsUIHelper1; class XSubmission; struct ItemNode; typedef Reference <XFormsUIHelper1> XFormsUIHelper1_ref; typedef Reference <XPropertySet> XPropertySet_ref; typedef Reference <XSubmission> XSubmission_ref; class XFormsPage: TabPage { XFormsUIHelper1_ref m_xUIHelper; bool DoToolBoxAction (int _nToolBoxID); SvLBoxEntry *AddEntry (const XPropertySet_ref &_rPropSet); }; class AddSubmissionDialog: ModalDialog { public: AddSubmissionDialog (Window *pParent, ItemNode *_pNode, const XFormsUIHelper1_ref & _rUIHelper); XSubmission_ref &GetNewSubmission () const { } }; bool XFormsPage::DoToolBoxAction (int _nToolBoxID) { AddSubmissionDialog aDlg (this, __null, m_xUIHelper); Reference <XSubmission> xNewSubmission = aDlg.GetNewSubmission (); Reference < XPropertySet > xNewPropSet (xNewSubmission); SvLBoxEntry *pEntry = AddEntry (xNewPropSet); } SvLBoxEntry *XFormsPage::AddEntry (const Reference <XPropertySet> &_rEntry) { } When one replaces the third from last line with: SvLBoxEntry *XFormsPage::AddEntry (const XPropertySet_ref &_rEntry) the ICE goes away...