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
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