----- Original Message -----
From: "David Abrahams" <[EMAIL PROTECTED]>

> > I'm not sure what you mean here.  You mean overloading
> > "BOOST_WORKAROUND" to cause an error (or warning) if you use
> > "BOOST_CURRENT_VERSION"?  That's no problem at all.
>
> I mean that
>
>     #if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_CURRENT_VERSION(0x530))
>       whatever
>     #endif
>
> would have the effect of
>
>     #if __SUNPRO_CC != 0
>     # if BOOST_DETECT_OUTDATED_WORKAROUNDS && __SUNPRO_CC > 0x530
>     #  error or warning
>     # endif
>       whatever
>     #endif
>
> While keeping the current semantics for normal uses of
> BOOST_WORKAROUND
>
> And, BTW, can you show us how to do it?

I'm still not sure what you mean.  What is the purpose of
"BOOST_CURRENT_VERSION"?  I was thinking it was meant to discriminate
between "normal" cases like this:

BOOST_WORKAROUND(__SUNPRO_CC, <= 0x530)
    // i.e. __SUNPRO_CC != 0 && __SUNPRO_CC <= 0x530

-vs.-

BOOST_WORKAROUND(__SUNPRO_CC, BOOST_CURRENT_VERSION(0x530))
// i.e.

__SUNPRO_CC != 0 && 1 % (__SUNPRO_CC > 0x530 ? 0 : 1)

or...

__SUNPRO_CC != 0 && __SUNPRO_CC <= 0x530


...depending on some flag like "BOOST_DETECT_OUTDATED_WORKAROUNDS."  If that
is what you want, the syntax has to be slightly different.

BOOST_WORKAROUND(__SUNPRO_CC, (0x530))
BOOST_WORKAROUND(__SUNPRO_CC, <= 0x530)

..or..

BOOST_WORKAROUND(__SUNPRO_CC, (BOOST_CURRENT_VERSION) 0x530)
BOOST_WORKAROUND(__SUNPRO_CC, <= 0x530)

..or..

BOOST_WORKAROUND(__SUNPRO_CC, BOOST_CURRENT_VERSION 0x530)
BOOST_WORKAROUND(__SUNPRO_CC, BOOST_OTHER_VERSION <= 0x530)

In other words, one xor the other is in parentheses or each of them have a
different prefixed identifiers.

If that is what you mean, take your pick.  The first one is the cleanest,
the second is the most explicit (and looks like a cast), and the third one
is evil (IMNHO).

Paul Mensonides

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to