Boost logo

Boost :

Subject: Re: [boost] [numeric] Adding numeric_cast_traits.hpp on 08/11 (today) breaks trunk
From: Daniel James (dnljms_at_[hidden])
Date: 2011-08-12 08:39:10

On 12 August 2011 13:20, Brandon Kohn <blkohn_at_[hidden]> wrote:
> Thanks :). I'm looking at the fix and don't understand why #elif was
> breaking there. I did my compiles on msvc-10 and gcc-4.3.4/cygwin with no
> issues.

This has come up before. The problem is with code like this:

#if !defined(SOMETHING)
#elif SOMETHING() == 1

In recent versions of gcc it fails when SOMETHING isn't defined
because the 'SOMETHING() == 1' clause is always evaluated - even
though the if statement has already been resolved. This is apparently
compliant with the standard.

The solution is to write:

#if !defined(SOMETHING)
# if SOMETHING() == 1
# endif

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