Some 3rdparty parsers (e.g. Qt moc) fail to parse the bitand.hpp
due to the fact that bitand is a keyword in C++, not a macro.
Modern MSVC versions define bitand/bitor only if __cplusplus macro
is not defined, see iso646.h: https://pastebin.com/zTcd0juT
Thus, boost can also check the macro only in C mode making moc happy
* Make the library modular usable.
* Switch to library requirements instead of source. As source puts extra source in install targets.
* Add requires-b2 check to top-level build file.
* Bump B2 require to 5.2
* Change all <source> references to <library>.
* Update copyright dates.
* Move inter-lib dependencies to a project variable and into the build targets.
* Update build deps.
* It normally should not be necessary to use the _Z form of the BOOST_PP_ENUM macro, although it is perfectly legal and helpful to do so, but in this case it is necessary as a workaround for a bug in the new VC++ standard conforming preprocessor. The bug manifests itself when testing the TTI library, which internally uses the Boost MPL code. The bug in the new VC++ standard conforming compiler is fixed in the VS2019 preview product, so that fix is sure to find its way to the official VS2019 product sometime soon. In the meantime this "fix" shortens the macro expansion somewhat and, while it should not be necessary, is still helpful.
* Fix for appveyor.yml file
* Added VS2019 tests, also with new preprocessor. Further MPL Fixes for new preprocessor bug, which are also useful and will speed up preprocessing.
* Can't seem to test msvc-10.0 or msvc-11.0 any more with Appveyor
* Update description
... to express their dependency on this library and retrieve any
configuration information such as the include directory, binary
to link to (if any), transitive dependencies, necessary compiler
options or the required c++ standards level.
The struct member function inside BOOST_MPL_ASSERT_MSG_IMPL was causing
multiple definitions of the same symbol when used inside e.g. template
functions.
An example of where this is a big issue is in the boost/geometry library
where you currently only can call each function once for each geometry
or you get hit by the multiple definitions linking error.
This fix* works around the issue by gracefully degrading to
BOOST_STATIC_ASSERT_MSG instead of failing during linking.