$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Nicola Musatti (nmusatti_at_[hidden])
Date: 2003-02-25 02:34:43
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