From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32645 invoked by alias); 6 Jul 2010 22:07:04 -0000 Received: (qmail 32607 invoked by uid 48); 6 Jul 2010 22:06:50 -0000 Date: Tue, 06 Jul 2010 22:07:00 -0000 Message-ID: <20100706220650.32606.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug c++/44827] g++4.3.4 segfaults when using boost::intrusive::list In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "chtz at informatik dot uni-bremen dot de" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2010-07/txt/msg00653.txt.bz2 ------- Comment #4 from chtz at informatik dot uni-bremen dot de 2010-07-06 22:06 ------- I found two possible work-arounds: either replace: > template > void remove(D* t){ > A_list::iterator it = A_list::s_iterator_to(*t); > a.erase_and_dispose(it, delete_disposer); > } by: template void remove(D* t){ A_list::iterator it = A_list::s_iterator_to(*t), it2 = it; ++it2; a.erase_and_dispose(it, it2, delete_disposer); } Or, what also works, is replacing delete_disposer by a non-template version: void delete_A(A* a){ delete a; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44827