On Jul 12, 2008, at 2:28 AM, boost-users-request@lists.boost.org wrote:
On Fri, Jul 11, 2008 at 6:06 PM, Igor R <boost.lists@gmail.com> wrote:
Does it compile if you define BOOST_NO_TYPEID ?

My question is why I need to enable 'rtti' in order to use boost shared_ptr ?

IIRC, get_deleter() function uses typeid(), which is unavailable in your case.

I have added '#define BOOST_NO_TYPEID ' Before I include
'shared_ptr.hpp', but i still get the following error:

/usr/include/boost/detail/sp_counted_impl.hpp: In member function
'virtual void* boost::detail::sp_counted_impl_pd<P,
D>::get_deleter(const std::type_info&)':
/usr/include/boost/detail/sp_counted_impl.hpp:150: error: cannot use
typeid with -fno-rtti

#define BOOST_NO_TYPEID
#include <boost/shared_ptr.hpp>

using namespace std;
using namespace boost;

Can you please tell me if there is a way to use boost smart pointer
without rtti?
Thank you.

Actually, it isn't clear to me that you CAN use shared_ptr without RTTI. The shared_ptr package (both boost and TR1) includes dynamic_pointer_cast and static_pointer_cast, which are RTTI-related functions.

Perhaps if you could share with us why it is important to use the -fno-rtti switch in your work, someone could provide more substantive suggestions. 

Cheers,

Rick Aurbach