|
Boost : |
From: Johan Paulsson (boost.org_at_[hidden])
Date: 2006-11-09 09:38:36
John Maddock wrote:
> Johan Paulsson wrote:
>> I wrote:
>>> Below is the compile-time assert I use.
>>> Would it be a useful addition to Boost?
8>< snip
> Frankly it's hard to choose between them on error message quality (which is
> to say none are all that good).
>
> One of the requirements that came up for static asserts when
> BOOST_STATIC_ASSERT was talked about was a declaration like syntax, in fact
> both:
>
> static_assert<condition> x;
>
> and
>
> typedef static_assert<condition> x;
>
> were explicitly rejected at the time.
Thank you for looking. I prefer some kind of template, but I now realize
most do not.
> I also seem to remember that some compilers at the time evaluated typedefs
> in a lazy manner: if the typedef was unused then it was never evaluated and
> the static-assertion was never triggered. That's the reason for some of the
> convolutions inside static_assert.hpp. I suspect, however, that current
> compilers have moved away from such "lazyness".
That would make my implementation useless.
I think it would be interesting to know that a compile-time assert
should work on any standard-conforming compiler. I don't know if, for
example, typedef-ining an invalid type inside a function, and then not
using the type, makes the program "ill formed" and requires a
"diagnostic message".
Maybe the complie-time asserts in Boost should work on any
standard-conforming compiler. I think that would be a good reason to use
Boost and not mine.
/Johan Paulsson
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk