
On Mon, Jun 8, 2009 at 6:19 PM, Kenny Riddile
Robert Dailey wrote:
On Mon, Jun 8, 2009 at 2:16 PM, Steven Watanabe
> wrote: AMDG
Robert Dailey wrote:
Just wondering what happens if I do this:
boost::shared_ptr<Foo> foo; boost::shared_ptr<Bar> bar; if( foo && bar ) { // Do stuff if both pointers are valid... }
I did not see an overloaded && operator in the interface of the class. When using normal pointer semantics, this code is valid through implicit conversion of a pointer value to a boolean type.
The same applies to shared_ptr. http://www.boost.org/libs/smart_ptr/shared_ptr.htm#conversions
Thanks. I figured this was the case but I guess I was just having trouble finding the header file in which this casting operator is implemented. I appreciate the answers to my embarrassingly obvious question.
------------------------------------------------------------------------
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Here's a short explanation why you won't find operators && or || overloaded very often:
http://blog.emptycrate.com/node/363
For a more thorough explanation, see chapter 7 in More Effective C++.
Thanks Kenny, I'm already aware of this though. The reason why I ask is because I have to work on a code base that insists on overloading such operators, and I'm investigating ways of cleaning it up. The code in question has no regard for short circuiting since they are already using overloaded && and || semantics. I appreciate everyone's help.