Boost logo

Boost :

From: scleary_at_[hidden]
Date: 2003-03-26 13:02:05


> -----Original Message-----
> From: Giovanni Bajo [mailto:giovannibajo_at_[hidden]]
>
> 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?

I would suspect your compiler. This works as expected (e.g., no assertions;
they both evaluate to true) with Borland C++ Builder 5.6 and GCC 3.2
prerelease.

        -Steve


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