"Peter Dimov" <[EMAIL PROTECTED]> writes: > 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.
Am I crazy, or should there be a pair of parens after "ptr"? -- Dave Abrahams Boost Consulting www.boost-consulting.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost