
Hello all, Boost.Python uses operator keywords in macro expansion. This is a bad idea because on some compilers like MSVC that implement and, or, etc using macros #define to &&, ||, these macros will not expand correctly when ciso646 is included before including python.hpp. #include <ciso646> // boost/python/operators.hpp BOOST_PYTHON_BINARY_OPERATOR(and, rand, &) BOOST_PYTHON_BINARY_OPERATOR(or, ror, |) ... This will actually expand to: BOOST_PYTHON_BINARY_OPERATOR(&&, rand, &) BOOST_PYTHON_BINARY_OPERATOR(||, ror, |) And then expand the macro causing a compiler error because the operator code will have names like op_&&, op_||, etc instead of the intended op_and, op_or, etc. An easy and safe fix should be to change the macro to move the _ to the macro call: BOOST_PYTHON_BINARY_OPERATOR(_and, rand, &) BOOST_PYTHON_BINARY_OPERATOR(_or, ror, |) Now _and, _or, etc are no longer keywords so it's safe to use them. --Lorenzo -- View this message in context: http://boost.2283326.n4.nabble.com/boost-python-incorrect-use-of-keywords-an... Sent from the Boost - Dev mailing list archive at Nabble.com.