David Abrahams
Joerg Ruedenauer
writes: Hello,
we use our own assertion handler and assert macro in our code, defined in a header which gets included at the end of our precompiled header file. Unfortunately, many boost libraries undermine this because they include the cassert header, which redefines the assert macro.
That's a clue that you shouldn't be #defining assert.
Currently we work around this by putting some boost libraries in the precompiled header and including our own assert header again in each source file which includes boost headers, but this is a clumsy and error-prone solution. Boost already nominately provides a solution through BOOST_ENABLE_ASSERT_HANDLER, but it's just not used consequently throughout the libraries.
Could the authors of the libraries (or the reviewers) please grep through the code and change the cassert (or assert.h) includes to boost/assert.hpp, and consequently, change assert(...) to BOOST_ASSERT(...)?
It's a very good idea, and I think we should do it.
Although I guess we have to be pretty careful, since things like polymorphic_downcast are documented as using the standard assert macro. Technically speaking, it's a breaking change. -- Dave Abrahams Boost Consulting www.boost-consulting.com