On Thu, 8 May 2003 15:06:02 +0300, "John Torjo" <[EMAIL PROTECTED]> wrote:
>Unfortunately, we can't use the do-while(0) idiom, since we don't know when >while(0) will be ;-) > >Example: >BOOST_ASSERT(i != j)(i)(j); > >or > >BOOST_ASSERT(i > 1000)(i); Oops, no. That's not the problem. The problem is that I read Daniel's reply out of context and too absent-mindedly :-) I thought it was something like if (false) ; else whereas he is really testing for a condition if(expr)... However, if you are going to abort at the end (or throw, but I don't want to enter in this matter) you can simply replace 'if' with 'while': #define BOOST_INVARIANT(expr) \ while /*if*/ (!(expr)) \ boost::invariant(), \ std::clog << "invariant failure: " #expr, \ boost::BOOST_INVARIANT_A \ \ /**/ But don't care about that. Had I noticed that there was really a condition I wouldn't have replied. And, then, Borland will find some way to warn in any case :-) >note: see the 'smart assert' thread, where we discuss details about the >interface/ implementation of the smart assert (BOOST_ASSERT) I have no time. And, from the little I've read, I've noticed quite a confusion between exceptions and asserts. Genny. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost