From: Andrei Alexandrescu (andrewalex_at_[hidden])
Date: 2001-11-24 13:21:47


> > #define STATIC_ASSERT_MSG(b, msg) \
> > { \
> ^
> > struct msg \
> > { \
> > msg(::boost::loki::int2type<true>) {} \
> > } msg(::boost::loki::int2type<(b) != 0>()); \
> > }
> ^
> The above STATIC_ASSERT_MSG macro can only be used in function scope which
> highly limits its use. IMHO, an industry strength STATIC_CHECK must be
usable
> at:
> - namespace,
> - class, and
> - function scope.

I know. The current STATIC_ASSERT has the same drawback. Would be good to
add something in that direction, too.

> if (expr_1)
> if (expr_2)
> STATIC_CHECK(const_expr);
> else
> stmt_1();
>
> When will stmt_1() be executed?
>
> So, use "do {...} while (0)" instead of "{ ... }".

I thought this is self-understood as it is a well-known idiom for creating
macros. I was actually surprised to see that boost doesn't apply this idiom
all over, and I was going to complain about that.

So by this message I am complaining :o).

> IMHO it is not imperative to have the compiler error message readable

IMHO it is very good to have the compiler error message readable if you can.

Andrei