Boost logo

Boost :

Subject: [boost] MPL bitand.hpp and iso646.h on MSVC 2008
From: Nelson, Erik - 2 (erik.l.nelson_at_[hidden])
Date: 2010-01-21 16:12:23

If I make a program like

#include <iso646.h>
#include <boost/mpl/bitand.hpp>

I get an error like

boost/mpl/aux_/include_preprocessed.hpp(37) : fatal error C1083: Cannot
open include file: 'boost/mpl/aux_/preprocessed/plain/&.hpp': No such
file or directory

And if I change it to

#include <iso646.h>
#include <boost/mpl/bitand.hpp>

I get

1>c:\work\boost\boost/mpl/aux_/numeric_op.hpp(86) : error C2332:
'struct' : missing tag name
1>c:\work\boost\boost/mpl/aux_/numeric_op.hpp(86) : error C3306:
'boost::mpl::<unnamed-tag>': unnamed class template is not allowed
1>c:\work\boost\boost/mpl/aux_/numeric_op.hpp(86) : error C2143: syntax
error : missing ';' before '&'

I think the problem is in boost/mpl/bitand.hpp, where

#define AUX778076_OP_PREFIX bitand

Is defined. 'bitand' is (nonconformantly) #defined to '&' in VC 2008's
iso646.h, borking the definition of AUX778076_OP_PREFIX.

The fix seems to be to #define AUX778076_OP_PREFIX to something else
that MSVC doesn't stomp on.



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