|
Boost : |
From: Marcin Kalicinski (kalita_at_[hidden])
Date: 2005-09-21 07:48:22
>> What is the next step so that we can move forward towards adding
>> BOOST_ASSUME
>> macro to assert.hpp header?
>
> Why is this not just the release configuration of BOOST_ASSERT?
That was the original idea but it was noted that it may break existing code
(see excerpt below). IMHO it would be better to have BOOST_ASSERT expand to
__assume, but it's just my opinion. Alternatively, we can make BOOST_ASSERT
expand by default to __assume and add a macro, e.g. BOOST_ASSERT_NO_ASSUME,
which prevents the expansion (to be used by these extremely rare cases where
__assume breaks anything).
== excerpt from original discussion ===
It looks to me as though this risks changing the semantics of BOOST_ASSERT
in a way which might break existing code.
As I read the documentation, currently code like:
if (!p) {
BOOST_ASSERT( false );
return;
}
is supported and meaningful. If BOOST_DISABLE_ASSERTS is true, the macro
does nothing and the return statement is executed when p is 0. If we
change the macro to instead expand to __assume, then the compiler will
probably omit both return and the check against zero. The documented
behaviour of the code will change.
== excerpt ends ===
regards,
Marcin
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk