diff --git a/doc/history.qbk b/doc/history.qbk index f63663d..f49fdcc 100644 --- a/doc/history.qbk +++ b/doc/history.qbk @@ -13,6 +13,8 @@ http://www.boost.org/LICENSE_1_0.txt) * Add `BOOST_VERSION_NUMBER_MAJOR`, `BOOST_VERSION_NUMBER_MINOR`, `BOOST_VERSION_NUMBER_PATCH` macros to extract components from valid version numbers. +* Change VS version numbering. Version after VS2015 will use the compiler + version instead of the varied product versions. [heading 1.4.1] diff --git a/include/boost/predef/compiler/visualc.h b/include/boost/predef/compiler/visualc.h index 9481d9d..f81e61e 100644 --- a/include/boost/predef/compiler/visualc.h +++ b/include/boost/predef/compiler/visualc.h @@ -29,6 +29,10 @@ Version number available as major, minor, and patch. [[`_MSC_FULL_VER`] [V.R.P]] [[`_MSC_VER`] [V.R.0]] ] + +[note Release of Visual Studio after 2015 will no longer be identified +by Boost Predef as the marketing version number. Instead we use the +compiler version number directly, i.e. the _MSC_VER number.] */ #define BOOST_COMP_MSVC BOOST_VERSION_NUMBER_NOT_AVAILABLE @@ -53,8 +57,18 @@ Version number available as major, minor, and patch. means that the compiler and VS product versions are no longer in sync. Hence we need to use different formulas for mapping from MSC version to VS product version. + + VS2017 is a total nightmare when it comes to version numbers. + Hence to avoid arguments relating to that both present and + future.. Any version after VS2015 will use solely the compiler + version, i.e. cl.exe, as the version number here. */ -# if (_MSC_VER >= 1900) +# if (_MSC_VER > 1900) +# define BOOST_COMP_MSVC_DETECTION BOOST_VERSION_NUMBER(\ + _MSC_VER/100,\ + _MSC_VER%100,\ + BOOST_COMP_MSVC_BUILD) +# elif (_MSC_VER >= 1900) # define BOOST_COMP_MSVC_DETECTION BOOST_VERSION_NUMBER(\ _MSC_VER/100-5,\ _MSC_VER%100,\