------- 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<class X> > void remove(D<X>* t){ > A_list::iterator it = A_list::s_iterator_to(*t); > a.erase_and_dispose(it, delete_disposer<A>); > } by: template<class X> void remove(D<X>* t){ A_list::iterator it = A_list::s_iterator_to(*t), it2 = it; ++it2; a.erase_and_dispose(it, it2, delete_disposer<A>); } Or, what also works, is replacing delete_disposer<A> by a non-template version: void delete_A(A* a){ delete a; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44827