
Hi Frank, Your patch resolves the error I posted before, but there are still other, similar errors while compiling other Boost.Python sources. I think this is the problem: shared_ptr.hpp: if(del_wrapper) del = del_wrapper->get_deleter<D>(); ^^^ ^^^ I think gcc 3.2 doesn't support this syntax. In the old days this was a common problem. The usual workaround is to use a type holder. See the patch below, which resolves all my compilation errors. Ralf P.S.: I bet there must be a central type holder in boost somewhere, but I couldn't find it. Index: shared_ptr.hpp =================================================================== --- shared_ptr.hpp (revision 43744) +++ shared_ptr.hpp (working copy) @@ -633,6 +633,8 @@ #endif +template <class T> struct sp_dw_type_holder { typedef T type; }; + class sp_deleter_wrapper { shared_ptr<const void> _deleter; @@ -649,7 +651,7 @@ _deleter.reset(); } template<typename D> - D* get_deleter() const + D* get_deleter(sp_dw_type_holder<D> const&) const { return boost::detail::basic_get_deleter<D>(_deleter); } @@ -663,7 +665,7 @@ if(del == 0) { detail::sp_deleter_wrapper *del_wrapper = detail::basic_get_deleter<detail::sp_deleter_wrapper>(p); - if(del_wrapper) del = del_wrapper->get_deleter<D>(); + if(del_wrapper) del = del_wrapper->get_deleter(detail::sp_dw_type_holder<D>()); } return del; }