libc++ C++14 Status¶
Overview¶
In April 2013, the C++ standard committee approved the draft for the next version of the C++ standard, initially known as “C++1y”.
The draft standard includes papers and issues that were voted on at the previous three meetings (Kona, Portland, and Bristol).
In August 2014, this draft was approved by ISO as C++14.
This page shows the status of libc++; the status of clang’s support of the language features is here.
The groups that have contributed papers:
CWG - Core Language Working group
LWG - Library working group
SG1 - Study group #1 (Concurrency working group)
Paper Status¶
Paper #  | 
Group  | 
Paper Name  | 
Meeting  | 
Status  | 
First released version  | 
|---|---|---|---|---|---|
LWG  | 
Terminology for Container Element Requirements - Rev 1  | 
Kona  | 
Complete  | 
3.4  | 
|
LWG  | 
Making Operator Functors greater<>  | 
Portland  | 
Complete  | 
3.4  | 
|
LWG  | 
std::result_of and SFINAE  | 
Portland  | 
Complete  | 
3.4  | 
|
LWG  | 
Constexpr Library Additions: chrono, v3  | 
Portland  | 
Complete  | 
3.4  | 
|
LWG  | 
Constexpr Library Additions: containers, v2  | 
Portland  | 
Complete  | 
3.4  | 
|
LWG  | 
Constexpr Library Additions: utilities, v3  | 
Portland  | 
Complete  | 
3.4  | 
|
LWG  | 
Constexpr Library Additions: complex, v2  | 
Portland  | 
Complete  | 
3.4  | 
|
LWG  | 
An Incremental Improvement to integral_constant  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
Null Forward Iterators  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
std::exchange()  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
Compile-time integer sequences  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
Addressing Tuples by Type  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
Making non-modifying sequence operations more robust  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
make_unique  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
Quoted Strings  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
User-defined Literals  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
TransformationTraits Redux (excluding part 4)  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
Adding heterogeneous comparison lookup to associative containers  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
A proposal to add a utility class to represent optional objects  | 
Bristol  | 
Removed from Draft Standard  | 
n/a  | 
|
LWG  | 
Fixing constexpr member functions without const  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
C++ Dynamic Arrays (dynarray)  | 
Bristol  | 
Removed from Draft Standard  | 
n/a  | 
|
SG1  | 
Shared Locking in C++  | 
Bristol  | 
Complete  | 
3.4  | 
|
LWG  | 
User-defined Literals for std::complex  | 
Chicago  | 
Complete  | 
3.4  | 
|
LWG  | 
Constexpr Library Additions: functional  | 
Chicago  | 
Complete  | 
3.4  | 
|
LWG  | 
Discouraging rand() in C++14  | 
Issaquah  | 
Complete  | 
3.5  | 
|
LWG  | 
Consistent Metafunction Aliases  | 
Issaquah  | 
Complete  | 
3.5  | 
|
SG1  | 
A proposal to rename shared_mutex to shared_timed_mutex  | 
Issaquah  | 
Complete  | 
3.5  | 
Library Working Group Issues Status¶
Issue #  | 
Issue Name  | 
Meeting  | 
Status  | 
|---|---|---|---|
Insufficient/inconsistent key immutability requirements for associative containers  | 
Kona  | 
Complete  | 
|
Reporting out-of-bound values on numeric string conversions  | 
Kona  | 
Complete  | 
|
  | 
Kona  | 
Complete  | 
|
Incorrect pre-conditions for some type traits  | 
Kona  | 
Complete  | 
|
Further incorrect usages of result_of  | 
Kona  | 
Complete  | 
|
messages_base::catalog overspecified  | 
Kona  | 
Complete  | 
|
Preconditions of reserve, shrink_to_fit, and resize functions  | 
Kona  | 
Complete  | 
|
Issues with std::reverse and std::copy_if  | 
Kona  | 
Complete  | 
|
No definition of “Stable” for copy algorithms  | 
Kona  | 
Complete  | 
|
forward_list::merge and forward_list::splice_after with unequal allocators  | 
Kona  | 
Complete  | 
|
Incorrect “mixed” move-assignment semantics of unique_ptr  | 
Kona  | 
Complete  | 
|
Unordered associative containers do not use allocator_traits to define member types  | 
Kona  | 
Complete  | 
|
Errors in regex bitmask types  | 
Kona  | 
Complete  | 
|
make_move_iterator and arrays  | 
Kona  | 
Complete  | 
|
More noexcept issues in basic_string  | 
Kona  | 
Complete  | 
|
Minimal allocator interface  | 
Kona  | 
Complete  | 
|
packaged_task should have deleted copy c’tor with const parameter  | 
Kona  | 
Complete  | 
|
Inconsistent exception spec for basic_string move constructor  | 
Kona  | 
Complete  | 
|
Incorrect constraints of future::get in regard to MoveAssignable  | 
Kona  | 
Complete  | 
|
Why is std::launch an implementation-defined type?  | 
Kona  | 
Complete  | 
|
std::valarray move-assignment  | 
Portland  | 
Complete  | 
|
Off by one error in std::reverse_copy  | 
Portland  | 
Complete  | 
|
Allocator requirements should include CopyConstructible  | 
Portland  | 
Complete  | 
|
const-qualification on weak_ptr::owner_before  | 
Portland  | 
Complete  | 
|
Overly generic type support for math functions  | 
Portland  | 
Complete  | 
|
Unnecessary constraints of va_start() usage  | 
Portland  | 
Complete  | 
|
std::allocator_traits<std::allocator<T>>::propagate_on_container_move_assignment  | 
Portland  | 
Complete  | 
|
Inconsistent requirements on   | 
Portland  | 
Complete  | 
|
remove can’t swap but note says it might  | 
Portland  | 
Complete  | 
|
merge() allocator requirements for lists versus forward lists  | 
Portland  | 
Complete  | 
|
unordered_map::insert(T&&) protection should apply to map too  | 
Portland  | 
Complete  | 
|
Unexpected output required of strings  | 
Portland  | 
Complete  | 
|
Unnecessary mem_fn overloads  | 
Portland  | 
Complete  | 
|
  | 
Portland  | 
Complete  | 
|
future_errc enums start with value 0 (invalid value for broken_promise)  | 
Portland  | 
Complete  | 
|
valarray and begin/end  | 
Portland  | 
Complete  | 
|
Misplaced effect in m.try_lock_for()  | 
Bristol  | 
Complete  | 
|
Vague Wording for condition_variable_any  | 
Bristol  | 
Complete  | 
|
Throws clause of condition_variable::wait with predicate  | 
Bristol  | 
Complete  | 
|
duration conversion overflow shouldn’t participate in overload resolution  | 
Bristol  | 
Complete  | 
|
merge() stability for lists versus forward lists  | 
Bristol  | 
Complete  | 
|
Absence of global functions cbegin/cend  | 
Bristol  | 
Complete  | 
|
error_category default constructor  | 
Bristol  | 
Complete  | 
|
Unclear hint type in Allocator’s allocate function  | 
Bristol  | 
Complete  | 
|
Hashing enums should be supported directly by std::hash  | 
Bristol  | 
Complete  | 
|
Concerns about 20.8/5  | 
Bristol  | 
Complete  | 
|
allocator_traits::max_size missing noexcept  | 
Bristol  | 
Complete  | 
|
nth_element requires inconsistent post-conditions  | 
Bristol  | 
Complete  | 
|
Missing reset() requirements in unique_ptr specialization  | 
Bristol  | 
Complete  | 
|
Does   | 
Bristol  | 
Complete  | 
|
Specify when once_flag becomes invalid  | 
Bristol  | 
Complete  | 
|
promise throws clauses  | 
Bristol  | 
Complete  | 
|
Incorrect requirements for hash specializations  | 
Bristol  | 
Complete  | 
|
missing ordering constraints for fences  | 
Bristol  | 
Complete  | 
|
atomic_flag::clear ordering constraints  | 
Bristol  | 
Complete  | 
|
notify_all_at_thread_exit synchronization  | 
Bristol  | 
Complete  | 
|
Missing noexcept specification in type_index  | 
Bristol  | 
Complete  | 
|
wstring_convert::converted() should be noexcept  | 
Bristol  | 
Complete  | 
|
string_convert and wbuffer_convert validity  | 
Bristol  | 
Complete  | 
|
Special members for wstring_convert and wbuffer_convert  | 
Bristol  | 
Complete  | 
|
Requirements on Copy/MoveInsertable  | 
Bristol  | 
Complete  | 
|
Missing throws clause for future/shared_future::wait_for/wait_until  | 
Bristol  | 
Complete  | 
|
vector<bool> is missing emplace and emplace_back member functions  | 
Bristol  | 
Complete  | 
|
ordering of condition variable operations, reflects Posix discussion  | 
Bristol  | 
Complete  | 
|
Specification of   | 
Bristol  | 
Complete  | 
|
Specification of   | 
Bristol  | 
Complete  | 
|
Data race avoidance for all containers, not only for sequences  | 
Bristol  | 
Complete  | 
|
scoped_allocator_adaptor uses wrong argument types for piecewise construction  | 
Bristol  | 
Complete  | 
|
basic_string::at should not have a Requires clause  | 
Bristol  | 
Complete  | 
|
assign() overspecified for sequence containers  | 
Bristol  | 
Complete  | 
|
Missing allocator-extended constructor for allocator-aware containers  | 
Bristol  | 
Complete  | 
|
Replace ambiguous use of “Allocator” in container requirements  | 
Bristol  | 
Complete  | 
|
Inconsistency in description of forward_list::splice_after single-element overload  | 
Bristol  | 
Complete  | 
|
Unrealistic header inclusion checks required  | 
Bristol  | 
Complete  | 
|
Standard code conversion facets underspecified  | 
Bristol  | 
Complete  | 
|
DR 704 removes complexity guarantee for clear()  | 
Bristol  | 
Complete  | 
|
Undefined behavior without proper requirements on basic_string constructors  | 
Bristol  | 
Complete  | 
|
common_type trait produces reference types  | 
Chicago  | 
Complete  | 
|
unique_ptr assignment effects w.r.t. deleter  | 
Chicago  | 
Complete  | 
|
Type traits and std::nullptr_t  | 
Chicago  | 
Complete  | 
|
Wrong description of effect 1 of basic_istream::ignore  | 
Chicago  | 
Complete  | 
|
iostream_category() and noexcept  | 
Chicago  | 
Complete  | 
|
ios_base::xalloc should be thread-safe  | 
Chicago  | 
Complete  | 
|
Unclear specification of find_end  | 
Chicago  | 
Complete  | 
|
Exceptions from std::seed_seq operations  | 
Chicago  | 
Complete  | 
|
Impossible container requirements for adaptor types  | 
Chicago  | 
Complete  | 
|
Do library implementers have the freedom to add constexpr?  | 
Chicago  | 
Complete  | 
|
regex_traits::isctype Returns clause is wrong  | 
Chicago  | 
Complete  | 
|
Throw specification of async() incomplete  | 
Chicago  | 
Complete  | 
|
packaged_task constructors should be constrained  | 
Chicago  | 
Complete  | 
|
Timed waiting functions cannot timeout if launch::async policy used  | 
Chicago  | 
Complete  | 
|
What should async do if neither ‘async’ nor ‘deferred’ is set in policy?  | 
Chicago  | 
Complete  | 
|
atomic_flag initialization  | 
Chicago  | 
Complete  | 
|
Why is forward_as_tuple not constexpr?  | 
Chicago  | 
Complete  | 
|
Inconsistency in allocator_traits::max_size  | 
Chicago  | 
Complete  | 
|
  | 
Chicago  | 
Complete  | 
|
Redundant sections for map and multimap members should be removed  | 
Chicago  | 
Complete  | 
|
NB comment: GB9  | 
Remove gets from C++14  | 
Chicago  | 
Complete  | 
Unclear requirement for exceptions thrown in condition_variable::wait()  | 
Issaquah  | 
Complete  | 
|
std::hash is vulnerable to collision DoS attack  | 
Issaquah  | 
Complete  | 
|
packaged_task::operator() synchronization too broad?  | 
Issaquah  | 
Complete  | 
|
Probable misuse of term “function scope” in [thread.condition]  | 
Issaquah  | 
Complete  | 
|
Strong guarantee on vector::push_back() still broken with C++11?  | 
Issaquah  | 
Complete  | 
|
Simplify container requirements with the new algorithms  | 
Issaquah  | 
Complete  | 
|
Setting a default argument in the declaration of a member function assign of std::basic_string  | 
Issaquah  | 
Complete  | 
|
regex_traits::lookup_classname specification unclear  | 
Issaquah  | 
Complete  | 
|
quoted should use char_traits::eq for character comparison  | 
Issaquah  | 
Complete  | 
|
User-defined literals for Standard Library types  | 
Issaquah  | 
Complete  | 
|
begin / end for arrays should be constexpr and noexcept  | 
Issaquah  | 
Complete  | 
|
make_reverse_iterator  | 
Issaquah  | 
Complete  | 
|
Effects of inaccessible   | 
Issaquah  | 
Complete  | 
|
Contradiction in regex_constants  | 
Issaquah  | 
Complete  | 
|
String exception inconsistency in erase.  | 
Issaquah  | 
Complete  | 
|
User-defined classes that cannot be derived from  | 
Issaquah  | 
Complete  | 
|
std::function ambiguity  | 
Issaquah  | 
Complete  | 
|
  | 
Issaquah  | 
Complete  | 
|
Reverse iterator does not fully support targets that overload operator&  | 
Issaquah  | 
Complete  | 
|
Default constructors for standard library containers are explicit  | 
Issaquah  | 
Complete  | 
|
Problematic postconditions of regex_match and regex_search  | 
Issaquah  | 
Complete  | 
|
Return value of std::regex_replace  | 
Issaquah  | 
Complete  | 
|
a.erase(q1, q2) unable to directly return q2  | 
Issaquah  | 
Complete  | 
|
Comparing iterators and allocator pointers with different const-character  | 
Issaquah  | 
Complete  | 
|
Wrong facet used by num_put::do_put  | 
Issaquah  | 
Complete  | 
|
Why is std::tie not constexpr?  | 
Issaquah  | 
Complete  | 
|
Complexity of count in unordered associative containers  | 
Issaquah  | 
Complete  | 
|
match_results::reference should be value_type&, not const value_type&  | 
Issaquah  | 
Complete  | 
|
Clarify container destructor requirements w.r.t. std::array  | 
Issaquah  | 
Complete  | 
|
tuple_size should always derive from integral_constant<size_t, N>  | 
Issaquah  | 
Complete  | 
|
apply() should return decltype(auto) and use decay_t before tuple_size  | 
Issaquah  | 
Complete  | 
|
weak_ptr should be movable  | 
Issaquah  | 
Complete  | 
|
weak_ptr::lock() should be atomic  | 
Issaquah  | 
Complete  | 
|
The type property queries should be UnaryTypeTraits returning size_t  | 
Issaquah  | 
Complete  | 
|
select_on_container_copy_construction() takes allocators, not containers  | 
Issaquah  | 
Complete  | 
|
Associative(initializer_list, stuff) constructors are underspecified  | 
Issaquah  | 
Complete  | 
|
vector::resize(n, t)’s specification should be simplified  | 
Issaquah  | 
Complete  | 
|
Insert iterator constructors should use addressof()  | 
Issaquah  | 
Complete  | 
|
regex_match()/regex_search() with match_results should forbid temporary strings  | 
Issaquah  | 
Complete  | 
|
regex(“meow”, regex::icase) is technically forbidden but should be permitted  | 
Issaquah  | 
Complete  | 
|
regex_iterator/regex_token_iterator should forbid temporary regexes  | 
Issaquah  | 
Complete  | 
|
Wording issue in nth_element  | 
Issaquah  | 
Complete  | 
|
Inconsistency between basic_ostream::seekp(pos) and basic_ostream::seekp(off, dir)  | 
Issaquah  | 
Complete  | 
|
quoted()’s interaction with padding is unclear  | 
Issaquah  | 
Complete  | 
|
integral_constant’s member functions should be marked noexcept  | 
Issaquah  | 
Complete  | 
|
min, max, and minmax should be constexpr  | 
Issaquah  | 
Complete  | 
|
Stability of erasure in unordered associative containers  | 
Issaquah  | 
Complete  | 
|
Remaining “Assignable” requirement  | 
Issaquah  | 
Complete  | 
|
How does regex_constants::nosubs affect basic_regex::mark_count()?  | 
Issaquah  | 
Complete  | 
|
  | 
Issaquah  | 
Complete  | 
|
unique_lock move-assignment should not be noexcept  | 
Issaquah  | 
Complete  | 
|
Incomplete action on async/launch::deferred  | 
Issaquah  | 
Complete  | 
|
Progress guarantees, lock-free property, and scheduling assumptions  | 
Issaquah  | 
Complete  | 
|
Inconsistent requirements for shared mutexes  | 
Issaquah  | 
Complete  |