The "end game" of a Technical Specification (TS) is to have the features in there added to a future version of the C++ standard. When this happens, the TS can be retired. Sometimes, only part of at TS is added to the standard, and the rest of the features may be incorporated into the next version of the TS.

Adoption leaves library implementors with two implementations of a feature, one in namespace std, and the other in namespace std::experimental. The first one will continue to evolve (via issues and papers), while the other will not. Gradually they will diverge. It's not good for users to have two (subtly) different implementations of the same functionality in the same library.

As features are adopted into the main standard, we will implement them in namespace std, and then remove the versions in std::experimental. The removal will not happen immediately, because that would be unhelpful for users - giving them no chance to update their code.

The rule of thumb that libc++ will follow is: one year.
One year after we ship an implementation of a feature in std, we will remove it from std::experimental.

A specific example: The first release of clang/libc++ that officially supported C++17 was 5.0. For the 7.0 release (one year after 5.0), we will remove the features that were adopted into C++17 from the TSes, and that were present in namespace std in the 5.0 release.

Library Fundamentals TS V1 and V2

Most (but not all) of the features of the LFTS were accepted into C++17.

SectionFeatureshipped in
std
To be removed from
std::experimental
Notes
2.1uses_allocator construction
5.0
7.0
3.1.2erased_type
n/a
Not part of C++17
3.2.1tuple_size_v
5.0
7.0
Removed
3.2.2apply
5.0
7.0
Removed
3.3.1All of the '_v' traits in <type_traits>
5.0
7.0
Removed
3.3.2invocation_type and raw_invocation_type
n/a
Not part of C++17
3.3.3Logical operator traits
5.0
7.0
Removed
3.3.3Detection Idiom
5.0
Only partially in C++17
3.4.1All of the '_v' traits in <ratio>
5.0
7.0
Removed
3.5.1All of the '_v' traits in <chrono>
5.0
7.0
Removed
3.6.1All of the '_v' traits in <system_error>
5.0
7.0
Removed
3.7propagate_const
n/a
Not part of C++17
4.2Enhancements to function
Not yet
4.3searchers
7.0
9.0
5optional
5.0
7.0
Removed
6any
5.0
7.0
Removed
7string_view
5.0
7.0
Removed
8.2.1shared_ptr enhancements
Not yet
Never added
8.2.2weak_ptr enhancements
Not yet
Never added
8.5memory_resource
Not yet
8.6polymorphic_allocator
Not yet
8.7resource_adaptor
n/a
Not part of C++17
8.8Access to program-wide memory_resource objects
Not yet
8.9Pool resource classes
Not yet
8.10monotonic_buffer_resource
Not yet
8.11Alias templates using polymorphic memory resources
Not yet
8.12Non-owning pointers
n/a
Not part of C++17
11.2promise
n/a
Not part of C++17
11.3packaged_task
n/a
Not part of C++17
12.2search
7.0
9.0
12.3sample
5.0
7.0
Removed
12.4shuffleNot part of C++17
13.1gcd and lcm
5.0
7.0
Removed
13.2Random number generationNot part of C++17
14Reflection LibraryNot part of C++17

FileSystem TS

The FileSystem TS was accepted (in toto) for C++17.

The FileSystem TS implementation is still (as of v6.0) in namespace std::experimental.

Parallelism TS V1 and V2

Some (most) of the Parallelism TS was accepted for C++17.

We have not yet shipped an implementation of the Parallelism TS.

Coroutines TS

The Coroutines TS is not yet part of a shipping standard.

We are shipping (as of v5.0) an implementation of the Coroutines TS in namespace std::experimental.

Networking TS

The Networking TS is not yet part of a shipping standard.

We have not yet shipped an implementation of the Networking TS.

Ranges TS

The Ranges TS is not yet part of a shipping standard.

We have not yet shipped an implementation of the Ranges TS.

Concepts TS

The Concepts TS is not yet part of a shipping standard, but it has been adopted into the C++20 working draft.

We have not yet shipped an implementation of the Concepts TS.

Concurrency TS

None of the Concurrency TS was accepted for C++17.

We have not yet shipped an implementation of the Concurrency TS.


Last Updated: 8-Feb-2018