On 9/14/2020 7:38 PM, Andrey Semashev via Boost wrote:
On 2020-09-15 01:52, Edward Diener via Boost wrote:
In lieu with Boost's decision regarding dropping support for C++03 compilation, I would like to drop support in the preprocessor library for preprocessors which do not implement variadic macros. Variadic macros were added in the C++11 standard, although a number of compilers supported them even before the official C++ standard. I will of course keep the same macro APIs, although deprecating non-variadic macro forms when alternate variadic macro forms exist. This will simplify Boost PP. Ideally, once Boost PP supports only preprocessors which implement variadic macros, Boost VMD can be added to Boost PP, for anyone who wants to use its functionality, and Boost VMD can then be retired.
Why not make Boost.Preprocessor2 or extend Boost.VMD?
Boost.Preprocessor is used quite a lot throughout Boost, not in the least part specifically to support C++03. If it stops being C++03 compatible, this will mean most of Boost will stop as well.
My proposed change does not mean that PP stops supporting C++03. Lots of compilers supported variadic macros even when compiling in C++03 mode, ie. gcc and clang and vc++ starting with VS2005 being the most prominent. The few that actually did not support variadic macros in C++03 mode should not be used with future Boost by anybody; they are really ancient. Isn't that what discouraging compiling in C++03 mode is all about, so that ancient compilers still supporting c++03 should not be used by developers as Boost goes forward.
At that point the dependent libraries may need to reevaluate if they still want to use Boost.Preprocessor and possibly either fork it or replace it with C++11 constructs. In some instances, like Boost.MPL, Boost.Variant, this may make the library pointless because there already are C++11 and newer replacements.