From: David Abrahams (dave_at_[hidden])
Date: 2005-12-02 12:55:17
Daryle Walker <darylew_at_[hidden]> writes:
> On 11/30/05 2:07 PM, "David Abrahams" <dave_at_[hidden]> wrote:
>> Daryle Walker <darylew_at_[hidden]> writes:
>>> On 11/29/05 4:27 PM, "Jason Kankiewicz" <jkankiewicz_at_[hidden]> wrote:
>>>> +# elif (defined(__GNUC__) && ((__GNUC__ >= 3 && __GNUC_MINOR__ >=5) ||
>>>> __GNUC__ >= 4))
>>> Shouldn't the check for GCC 3.x be:
>>> __GNUC__ == 3 && __GNUC_MINOR__ >= 5
>>> instead of the currently over-broad version? Otherwise version numbers like
>>> 4.6 or 5.9 would match on that phrase, which is wrong. They should match on
>>> the "__GNUC__ >= 4" phrase instead.
>> Well, that would certainly be clearer, but it is semantically
>> equivalent, is it not?
> Sort of; it happens to be equivalent for the 3.x series. The phrase implies
> it's applicable to any higher series (4.x, 5.x, etc.),
> but that's wrong
> because it fails numbers like 4.2.
What fails numbers like 4.2?
> The "__GNUC__ >= 4" phrase saves you
> from that.
So, as I was saying, it's semantically equivalent. I was trying to
get an idea how urgent it was to make a change, so close to the
> The next similar error may be more insidious.
It's a nonissue, fortunately, since the code in question does not
appear anywhere in CVS.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk