<p dir="ltr">I second Justin's suggestion, but would that happen in LLVM 5 or 6?</p>
<p dir="ltr">Just as something to consider, it may also cause spurious errors for people who are relying on the at-version-stability of experimental libraries, causing them to turn off warnings for deprecated code.</p>
<p dir="ltr">As C Bergstrom has said, users buy into experimental libraries with the knowledge that the interface or behaviour could change at a moment's notice, so it might not be an issue, but it is worth considering.</p>
<br><div class="gmail_quote"><div dir="ltr">On Tue., 11 Apr. 2017, 08:11 Justin Bogner via cfe-dev, <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Marshall Clow via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a>> writes:<br class="gmail_msg">
> As part of the work on C++17, WG21 released a series of "Technical<br class="gmail_msg">
> Specifications", (TS) which added proposed new features to the standard<br class="gmail_msg">
> library. These were all defined in the namespace 'std::experimental' (and<br class="gmail_msg">
> namespaces inside of that).<br class="gmail_msg">
><br class="gmail_msg">
> Then, much of these features were merged into the main standard, and became<br class="gmail_msg">
> part of namespace 'std'. Libc++ now has two implementations of several of<br class="gmail_msg">
> these, and they are diverging (because changes were made to the ones in the<br class="gmail_msg">
> main standard, but not to the ones in the TS.<br class="gmail_msg">
><br class="gmail_msg">
> In the long run, I would like to remove the TS versions of these features<br class="gmail_msg">
> from libc++ - since there are "better" versions in the main standard now.<br class="gmail_msg">
> However, since people are using these, I don't think yanking them w/o<br class="gmail_msg">
> warning is the right thing to do.<br class="gmail_msg">
><br class="gmail_msg">
> So, I'm proposing a new policy, and a timetable:<br class="gmail_msg">
><br class="gmail_msg">
> One year.<br class="gmail_msg">
><br class="gmail_msg">
> One year after we ship a LLVM release that supports a new C++ standard, we<br class="gmail_msg">
> will remove all the features that are in the 'experimental' namespace that<br class="gmail_msg">
> are implemented in the new standard).<br class="gmail_msg">
><br class="gmail_msg">
> Applying this policy to C++17, we get:<br class="gmail_msg">
><br class="gmail_msg">
> LLVM 5.0 will support C++17.<br class="gmail_msg">
><br class="gmail_msg">
> So, for LLVM 7.0, we will remove (at least) the following features from<br class="gmail_msg">
> libc++<br class="gmail_msg">
> * std::experimental::filesystem<br class="gmail_msg">
> * std::experimental::optional<br class="gmail_msg">
> * std::experimental::any<br class="gmail_msg">
> * std::experimental::string_view<br class="gmail_msg">
> * the searchers (std::experimental::boyer_moore, etc)<br class="gmail_msg">
> * std::experimental::random_shuffle<br class="gmail_msg">
<br class="gmail_msg">
Should we throw [[deprecated("use std::filesystem")]] and such on these<br class="gmail_msg">
things in the window between the non-experimental version being released<br class="gmail_msg">
and the experimental one being removed?<br class="gmail_msg">
<br class="gmail_msg">
> and probably other things...<br class="gmail_msg">
><br class="gmail_msg">
> Comments?<br class="gmail_msg">
><br class="gmail_msg">
> -- Marshall<br class="gmail_msg">
> _______________________________________________<br class="gmail_msg">
> cfe-dev mailing list<br class="gmail_msg">
> <a href="mailto:cfe-dev@lists.llvm.org" class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a><br class="gmail_msg">
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
cfe-dev mailing list<br class="gmail_msg">
<a href="mailto:cfe-dev@lists.llvm.org" class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a><br class="gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br class="gmail_msg">
</blockquote></div>