Boost logo

Boost :

Subject: Re: [boost] Boost should not be saying "_FPOSOFF"
From: Billy O'Neal (VC LIBS) (bion_at_[hidden])
Date: 2016-09-19 17:45:20

For the moment (as in “what is going to ship with VS “15””) we have done this:

// TRANSITION: Boost nonconformingly uses this macro

#define _FPOSOFF(fp) ((long long)(fp))

Because even if Boost fixes this immediately we don’t want break all the existing Boost instances out there. Will nuke outright next time we break bincompat; sometime after VS “15”.


From: Edward Diener<mailto:eldiener_at_[hidden]>
Sent: Monday, September 19, 2016 2:27 PM
To: boost_at_[hidden]<mailto:boost_at_[hidden]>
Subject: Re: [boost] Boost should not be saying "_FPOSOFF"

On 9/19/2016 1:32 PM, Rene Rivera wrote:
> On Mon, Sep 19, 2016 at 7:18 AM, Edward Diener <eldiener_at_[hidden]>
> wrote:
>> I have pushed a fix for this on the 'develop' branch of iostreams. In the
>> fix basically iostreams uses _FPOSOFF for versions of VC++ prior to VC++14
>> but uses '((long long)(fp))' for VC++14 on up.
> That seems like a fragile fix to me. How do you know which version of VC is
> not going to have that def? Wouldn't it be better to use _FPOSOFF if it's
> defined, and the cast otherwise? That way whenever the macro goes away it
> will work, regardless of the specific version when that happens.

I understand what you are saying but _FPOSOFF is "undocumented" in the
sense that it should not be relied on. Since I was told in this thread
that for VC++14 on up Microsoft plans to "remove" it would it not simply
be better not to rely on it for those releases of VC++ ?

I could of course easily enough test for it and, if it exists, still use
_FPOSOFF, which is what you are suggesting.

Unsubscribe & other changes:

Boost list run by bdawes at, gregod at, cpdaniel at, john at