#include #include #include class Count { int value_; public: explicit Count(int value) : value_(value) {} int value() const { return value_; } explicit operator bool() const { return value_ != 0; } }; int main() { static_assert(std::is_constructible::value, "direct construction"); static_assert(!std::is_convertible::value, "no implicit conversion"); Count count{3}; const bool active = static_cast(count); assert(active); if (count) std::cout << count.value() << '\n'; }