[llvm-dev] RFC: Plan for removing components from namespace std::experimental

Marshall Clow via llvm-dev llvm-dev at lists.llvm.org
Mon Apr 10 13:22:59 PDT 2017

As part of the work on C++17, WG21 released a series of "Technical
Specifications", (TS) which added proposed new features to the standard
library. These were all defined in the namespace 'std::experimental' (and
namespaces inside of that).

Then, much of these features were merged into the main standard, and became
part of namespace 'std'.  Libc++ now has two implementations of several of
these, and they are diverging (because changes were made to the ones in the
main standard, but not to the ones in the TS.

In the long run, I would like to remove the TS versions of these features
from libc++ - since there are "better" versions in the main standard now.
However, since people are using these, I don't think yanking them w/o
warning is the right thing to do.

So, I'm proposing a new policy, and a timetable:

One year.

One year after we ship a LLVM release that supports a new C++ standard, we
will remove all the features that are in the 'experimental' namespace that
are implemented in the new standard).

Applying this policy to C++17,  we get:

LLVM 5.0 will support C++17.

So, for LLVM 7.0, we will remove (at least) the following features from
* std::experimental::filesystem
* std::experimental::optional
* std::experimental::any
* std::experimental::string_view
* the searchers (std::experimental::boyer_moore, etc)
* std::experimental::random_shuffle

and probably other things...


-- Marshall
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170410/9f0ed5e5/attachment-0001.html>

More information about the llvm-dev mailing list