Boost logo

Boost :

Subject: [boost] [safebool] Can we generalize it and put it into utilities?
From: Vladimir.Batov_at_[hidden]
Date: 2009-03-29 17:18:40


Repeating safe-bool scaffolding over and over again is a real nuisance. It
is worse for the end users as not exactly everyone is intimately familiar
with the issue and the safe-bool workaround. Can we generalize it and put
something like the following into utilities?

struct safebool
{
    typedef void (safebool::*unspecified_bool_type)() const;
    typedef unspecified_bool_type result;

    explicit safebool(bool v) : value_(v) {}

    operator result() const { return value_ ? &safebool::internal_bool :
0; }

    private:

    void internal_bool() const {};

    bool value_;
};

That way all we (and the users) will have to do to deploy the technique
will be

class Foo
{ ...
    operator safebool::result() const { return safebool(my_condition); }
};

This seems simple and hassle-free.

Thanks,
Vladimir.


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