Jean-Francois Bastien skrev:
We have this really neat and simple macro in our project: #define compile_assert(x) typedef bool COMPILE_ASSERT[(x) ? 1 : -1]
Although it does what we need and serves us well, I tried to replace it with BOOST_STATIC_ASSERT. Unfortunately this resulted in a lot of ugly warnings throughout the compile: warning: use of old-style cast
There's the following comment in the static assert header:
// Note that the argument to the assert is explicitly cast to bool using old- // style casts: too many compilers currently have problems with static_cast // when used inside integral constant expressions.
The solution would be to add even more defines to use old style or static casts depending on which compiler is used.
I just wonder for how long time Boost has to maintain compatibility with every buggy compiler that was ever released? Has not static_cast been an ISO standard for like a decade now? And it is not extremely difficult to implement either (unlike the export keyword). I suppose we will just continue to use our one-liner compile_assert (quoted above) for now. It seems to work on all our target platforms (GCC, MacOS X, N800, MinGW, MSVC8).