Boost logo

Boost :

Subject: Re: [boost] [variant] Maintainer
From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2015-06-28 12:41:21


On 28 Jun 2015 at 9:30, Robert Ramey wrote:

> On 6/28/15 6:15 AM, Niall Douglas wrote:
> > https://github.com/ned14/boost.spinlock/blob/master/include/boost/spin
> > lock/tribool.hpp
>
> How is this better/different than the current boost::tribool?

1. Mine is 100% constexpr.
2. I think mine implements std::min/max and other ternary logic
primitives Boost.Tribool does not. I didn't look into it in detail.
3. Mine is much more conservatively designed. Specifically:

  a. No automatic conversion operators, thus preventing
assert(something==!!something). It also forces the programmer to
explicitly state what they mean when working with tribools, see
below.
  b. operator&& and operator|| return bool, not tribool. If you want
tribool outcomes, use the bitwise operators. I'm also matching 100%
the C++ standard text on this where logical operators are supposed to
return only bool.

> I've used this on several occasions with good success. It's well
> documented as well.

I was being incredibly paranoid with my tribool. Almost certainly
excessively so. But they're new to me, so I was being extra cautious
to make sure I didn't shoot myself in the foot later. Besides,
writing this by hand:

tribool t;
if(true_(t)) ...
else if(false_(t)) ...
else if(unknown_(t)) ...

... isn't too bad, and has the advantage of being very clear even to
programmers not familiar with tribool (i.e. me).

Niall

-- 
ned Productions Limited Consulting
http://www.nedproductions.biz/ 
http://ie.linkedin.com/in/nialldouglas/



Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk