Ответ 1
bool_testable<>
в Boost.Operators выглядит многообещающим.
В ссылке упоминается, что:
bool_testable
обеспечивает антитезуoperator bool
, что справедливо выражениеif (!p)
, а также делаяoperator bool
более безопасным, предотвращая случайные преобразования целочисленные типы....bool_testable<>
предотвращает эти случайные конверсий путем объявления частного оператора преобразования к подписанному char, и не определяя тело.