Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2002-11-30 11:19:09


"Peter Dimov" <pdimov_at_[hidden]> writes:

> It's fairly easy to provide a get_pointer for std::auto_ptr. ;-)

One that works for regular pointers as well, and works on msvc6? I'd
love to see that!

> It ought to
> be in std:: but a boost:: overload would do as well since the pointer
> version is in boost.
>
> boost/get_pointer.hpp?

Sure, be my guest!

>> Maybe the thing to do is to provide a generalized get_pointer template
>> which does &*p.
>
> This doesn't allow p to be NULL; get_pointer has no such requirement.

OK.

>> And now, on to a tougher problem:
>>
>> What's the generic form to use for checking whether a Dereferenceable
>> type is NULL?
>
> get_pointer(p) != 0?

If you can work out how to write get_pointer, I guess that works.

>> The only forms which work for std::auto_ptr is:
>>
>> !p.get()
>> !p.operator->()
>>
>> I'd use the second one for all class types, but STLPort's debug mode
>> asserts instead of returning 0. It's a nonconforming but IMHO very
>> reasonable extension :(.
>
> It won't work for scoped/shared_ptr either, and I haven't forgot the != 0
> requirement in operator->. ;-)

Not sure what you mean. You're free to impose a != 0 requirement for
operator-> of scoped/shared_ptr, but auto_ptr doesn't have such a
requirement on its operator->.

-- 
                       David Abrahams
   dave_at_[hidden] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk