From: Jonathan Turkanis (technews_at_[hidden])
Date: 2004-09-20 12:58:08
"Ben Hutchings" <ben.hutchings_at_[hidden]> wrote in message
> Jonathan Turkanis <technews_at_[hidden]> wrote:
> > "Robert Ramey" <ramey_at_[hidden]> wrote in message
> > > I use
> > >
> > > ....
> > > BOOST_STATIC_ASSERT(sizeof(T) == 0);
> > The expression 'always_false<T>::value' can't be evaluated until
> > the point of instantiation, since always_false could be
> > specialized for T. OTOH, the compiler can tell immediately that
> > 'sizeof(T) == 0' is false, so might it not replace
> > 'sizeof(T) == 0' with 'false', and then issue the same error as
> > in the quoted case?
> sizeof(T) isn't always false, because for some types T it isn't
> even well-formed.
Okay -- T could be a function type, for instance.
> As a value-dependent expression I think it must
> not be evaluated until the template is instantiated.
At any rate, if 'sizeof(T) == 0' is not always false, then
BOOST_STATIC_ASSERT(sizeof(T) == 0);
is not a suitable generic replacement for
So I'm still in favor of adding BOOST_STATIC_ASSERT_FALSE.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk