BOOST_ASSERT(some_lenghty_function())(???)

2. BOOST_ASSERT( some_lengthy_function() > 10) ( some_lengthy_function()); Indeed, is kind of lengthy, but this is life :-( The point is that I could provide the v_ macro as well - it would not be too complicated. What do others think?

I wondered about this as well. Here is one option: BOOST_PREPARE_ASSERT(int _result=some_lengthy_function()); BOOST_ASSERT(_result>10)(_result);

I've used something like this in my own assert library, but have never been happy with having a local variable that is only there in debug mode.

How would the v_ macro work?

If not-idempotent function is given as parameter, it may have sideeffects
(silly contrived example: pool resource allocator which gets exhausted in
the middle of assert).

I did think (a lot!) about this. But, it's reasonable to assume that functions/ member functions that are called within an ASSERT should all be constant, because they won't be called at all in release mode.

I'm not convinced that is reasonable, but even if no side effects the assert might take a significant amount of time (e.g. checking an object matches what is in a back-end database, or checking a graph has no cycles).


Darren


_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to