Glen Fernandes вроте:
Do you have an example of a Boost library author or maintainer that has refused (either a pull request, or a other feature request) to leverage C++11+ features (after detecting them with Boost.Config, of course) to provide some more optimal implementation in their library, or provide a new feature their library?
There are Boost libraries are committed to supporting C++03, but they also leverage C++11, C++14, C++17 features when available, because this is what those particular library authors/maintainers are happy to do. (Myself included: I would not refuse to take advantage of a C++17 feature for C++17 users, while still supporting C++11 for C++11 users).
Doing this in a header-only library is a recipe for (usually asymptomatic) ODR violations, if the library is used by two translation units with different cxxstd settings, as I pointed out recently. But that's not the point, is it? The point is, f.ex. that Boost.Test can't drop C++03 and use rvalue references and std::function in its interface (also something we discussed), because it's Boost Test, which other libraries use in their tests. Since we (Boost) officially support C++03, we run tests with C++03, and Boost.Test has to support C++03. If we (Boost) dropped C++03 support, meaning that we no longer support `b2 install` to work with a C++03 compiler and we no longer run (our own) regression tests under C++03 compilers, Boost.Test, and each and every one of its dependencies would now be free to drop C++03 support. In addition, we may start retiring libraries that have a standard equivalent, such as f.ex. boost::function. Or we may not - it'd be up to us to decide. But we would be able to do it if we wanted to. (And of course migrate mpl use to mp11. :-) )