Hi James,
Unfortunately it is not possible to emulating the short-circuiting behavour
of the inbuilt && and || operators, as both sides are just arguments to a
function disguised as an operator.
However I do agree that this behaviour is unexpected to say the least, and
terrible for other people looking at the code without knowing they aren't
native booleans (and expecting short-circuiting operators). However it is
hard to consider an alternative syntax which makes tribools looks anything
like native booleans...
BTW, this is the very reason why Meyers (in More Effective C++) says to
never overload boolean operators!
Alex
2008/5/13 Jean-Pierre Bergamin
Hello boost-users
I just ran into quite a bad issue with boost::tribool. The overloaded operators && and || may (and normally do) evaluate the righthand side of logical expressions although not needed/permitted. They i.e. evaluate the rhs expression in a conjunction where the first term is false.
This leads of course to very surprising results. IMHO, the provided operators should be removed or should honor normal semantics. Shall I issue a bug-report? I think the current situation is quite unconvincingly.
Regards
James
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users