7 Aralık 2020 Pazartesi

BOOST_ASSERT Macrosu

Giriş
Bu macro genelde şöyle kullanılır
BOOST_ASSERT(!!p); // where `p` is a pointer
Açıklaması şöyle
By default, BOOST_ASSERT(expr) expands to assert(expr). That C++ assert function takes a scalar argument, not bool. Thus, your statement, "the expected expression is a boolean," is not correct.

Classes in C++ can implement operator bool(); the basic_stream classes are examples of such: assert(std::cin) will not work. The !! operator forces the use of std::cin::operator bool(), and bool after !! will be evaluated to int 0 or 1. This is shorter than assert(bool(std::cin)).