On 08/02/2023 17:30, Matt Borland via Boost wrote:
Maybe requiring support for all the language features or the standard library is not strictly necessary.
I would argue that it is necessary to strictly require full compliance with C++11. Invariably the libraries are going to have interdependencies, and strict compliance would give us a known lowest common denominator. Let’s say Boost.X uses GCC 4.8 and depends on Boost.Y which switches from Boost.TypeTraits to
since it no longer has to support C++03. Now Boost.X either has to increase it’s minimum compiler version to GCC 5, or the maintainer of Boost.Y is hamstrung trying to support Boost.X. To avoid this situation entirely we enforce strict C++11 compliance (e.g. GCC 5, Clang 5, MSVC 14.0). We could move something similar to this file (https://github.com/boostorg/math/blob/develop/include/boost/math/tools/cxx03...) out of math into config to throw hard errors on any non-compliant compiler.
MSVC 14.0 is not fully compliant, full conformance starts with VS2017 I think: https://learn.microsoft.com/en-us/cpp/overview/cpp-conformance-improvements-... Best, Ion