we just reject now but it is valid code as far as I can tell: template< class other> struct bin_search_tree_data_ { typedef typename other::node node; typedef node *node_pointer; ~bin_search_tree_data_() { m_p_head->~node(); } node_pointer m_p_head; }; struct blowup { typedef int node; }; bin_search_tree_data_< blowup > r;
------------------------------ Here is one that ICEs also and closer to the original code: template< class other> struct bin_search_tree_data_ { typedef typename other::node node; typedef node *node_pointer; ~bin_search_tree_data_() { m_p_head->~node(); } node_pointer m_p_head; }; struct blowup2{}; struct blowup { typedef blowup2 node; }; bin_search_tree_data_< blowup > r; ------ I am creating this after 15 hours of no activity on fixing the problem. -- Summary: [4.2 Regression] Dependent deconstrcutors Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, rejects-valid Severity: blocker Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org OtherBugsDependingO 23287 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28942