Here is my (strange) fix: You re handling intrusive_ptr on objects of class X. You should specialize thee intrusive_ptr template with such code:
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
boost::intrusive_ptr<X>::intrusive_ptr( intrusive_ptr<U> const & rhs, typename detail::sp_enable_if_convertible<U, X>::type )
: px( rhs.get() )
if( px != 0 )
intrusive_ptr_add_ref( px );
I don t know exactly why it s working... but I don t care :) The main difficulty is to find the X classes which make the compiler crash. Good luck!
Disclaimer: it is possible that your problem can be caused (and solved) by something totally different!