Edward Diener wrote:
What I was saying is this: the user, or someone acting on his behalf such as a package maintainer, types f.ex.
b2 toolset=clang install
and obtains a prebuilt Boost.
Then the user types f.ex.
clang++ -std=c++17 myapp.cpp -lboost_pumpkin
and expects it to work. If boost_pumpkin autodetects C++11/C++14/C++17 and changes its API to match, it doesn't work.
Is not this a user problem, irrelevant of cxxstd level ?
It is a user problem, but note that it doesn't happen if libraries don't change their API in response to the cxxstd level. That is, libraries that assume C++03 and use the Boost components instead of their standard equivalents don't suffer from this, it all works. If we up the minimum requirement these libraries could just unconditionally transition to the std components wholesale (again without adapting to cxxstd) and it will still work (provided that we either build with an intelligent post-03 default, or quit with an error when C++03 is assumed by omission as above, thereby forcing the user to choose a preferred post-03 cxxstd level.)