|
Boost : |
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.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk