Boost logo

Boost :

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.),

Isn't it?

> 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
release date.

> 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