Boost logo

Boost :

Subject: Re: [boost] A possible date for dropping c++03 support
From: Peter Dimov (lists_at_[hidden])
Date: 2018-08-27 16:29:42


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. :-) )


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk