$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] [signals2] Test failure in C++11 (trivial fix for incorrect usage of boost::optional)
From: Gavin Lambert (gavinl_at_[hidden])
Date: 2014-02-27 20:45:44
On 28/02/2014 12:33, Quoth Frank Mori Hess:
> Ah, I wasn't aware optional already had overloaded the comparison
> operators with comparisons of optional<T> vs T.  A little unfortunate
> IMO, it makes optional<bool> a bit of a disaster when any sort of
> conversion to bool at all is supported.
Not really; tristate bool logic with optional<bool> is pretty 
straightforward.  It usually falls into the pattern:
   if (value == true) {
     /* do something when true */
   } else if (value == false) {
     /* do something when false */
   } else {
     /* do something when null/none/unknown/unspecified */
   }
There is a little trap for the unwary where:
   if (value) {
     /* either true or false */
   } else {
     /* only null, not false */
   }
But once you get used to it, I'd hardly call it a "disaster".  And it's 
consistent with the behaviour of other values, eg. optional<int> when 
zero executes the if block, not the else block.