>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