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

#undef BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
#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

#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
#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.

Thanks

Erik


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk