|
Boost : |
From: Ralf W. Grosse-Kunstleve (rwgk_at_[hidden])
Date: 2008-03-21 18:53:21
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;
}
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk