Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2003-03-26 12:53:42


Giovanni Bajo wrote:
> Hello,
>
> I have observed a strange behaviour with shared_ptr:
>
> struct A
> {
> shared_ptr<int> ptr;
>
> operator bool()
> { return ptr; }
> };
>
> A a;
> a.ptr.reset(new int);
> assert(a.ptr);
> assert(a);
>
> Now, the second assertion fails (Comeau). It works if for example I
> change
> my operator bool into "return ptr ? true : false;". This is
> counter-intuitive to me. Can anybody explain me why?

Beats me. All other compilers I tried do not assert. On como,
assert((bool)a.ptr) passes, but even an explicit (bool)ptr inside the
conversion operator returns false.


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