Beman Dawes wrote:> At 07:32 PM 2/24/2003, Daniel Frey wrote:
 >Hi,
 >
 >I came across the following problem:
 >
 >When I have a class X which lives in a namespace where there's a function
 >'checked_delete' declared that can take a X*, smart_ptr (and probably
 >others)
 >that use checked_deleter (note the 'r'!) cannot call checked_delete. It's
 >ambiguous due to argument dependent lookup. To fix it, I had to make the
 >call to checked_delete in checked_deleter qualified:
 >
 >template<class T> struct checked_deleter
 >{
 >    typedef void result_type;
 >    typedef T * argument_type;
 >
 >    void operator()(T * x) const
 >    {
 >        ::boost::checked_delete(x);
 >    }
 >};
 >
 >(alas for checked_array_deleter)
 >
 >Comments?

Go ahead and make the change, unless someone voices an objection.

I don't have a strong opinion in either direction, but I do feel that it is important that this is thought over. Overloading checked_delete() on purpose in a user defined namespace might be considered a way to provide a smart pointer with a custom deleter. Is this really something bad?


Cheers,
Nicola Musatti


_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to