libc++ C++14 Status

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 3346 LWG Terminology for Container Element Requirements - Rev 1 Kona Complete 3.4 3421 LWG Making Operator Functors greater<> Portland Complete 3.4 3462 LWG std::result_of and SFINAE Portland Complete 3.4 3469 LWG Constexpr Library Additions: chrono, v3 Portland Complete 3.4 3470 LWG Constexpr Library Additions: containers, v2 Portland Complete 3.4 3471 LWG Constexpr Library Additions: utilities, v3 Portland Complete 3.4 3302 LWG Constexpr Library Additions: complex, v2 Portland Complete 3.4 3545 LWG An Incremental Improvement to integral_constant Bristol Complete 3.4 3644 LWG Null Forward Iterators Bristol Complete 3.4 3668 LWG std::exchange() Bristol Complete 3.4 3658 LWG Compile-time integer sequences Bristol Complete 3.4 3670 LWG Addressing Tuples by Type Bristol Complete 3.4 3671 LWG Making non-modifying sequence operations more robust Bristol Complete 3.4 3656 LWG make_unique Bristol Complete 3.4 3654 LWG Quoted Strings Bristol Complete 3.4 3642 LWG User-defined Literals Bristol Complete 3.4 3655 LWG TransformationTraits Redux (excluding part 4) Bristol Complete 3.4 3657 LWG Adding heterogeneous comparison lookup to associative containers Bristol Complete 3.4 3672 LWG A proposal to add a utility class to represent optional objects Bristol Removed from Draft Standard n/a 3669 LWG Fixing constexpr member functions without const Bristol Complete 3.4 3662 LWG C++ Dynamic Arrays (dynarray) Bristol Removed from Draft Standard n/a 3659 SG1 Shared Locking in C++ Bristol Complete 3.4 3779 LWG User-defined Literals for std::complex Chicago Complete 3.4 3789 LWG Constexpr Library Additions: functional Chicago Complete 3.4 3924 LWG Discouraging rand() in C++14 Issaquah Complete 3.5 3887 LWG Consistent Metafunction Aliases Issaquah Complete 3.5 3891 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 1214 Insufficient/inconsistent key immutability requirements for associative containers Kona Complete 2009 Reporting out-of-bound values on numeric string conversions Kona Complete 2010 is_* traits for binding operations can't be meaningfully specialized Kona Complete 2015 Incorrect pre-conditions for some type traits Kona Complete 2021 Further incorrect usages of result_of Kona Complete 2028 messages_base::catalog overspecified Kona Complete 2033 Preconditions of reserve, shrink_to_fit, and resize functions Kona Complete 2039 Issues with std::reverse and std::copy_if Kona Complete 2044 No definition of "Stable" for copy algorithms Kona Complete 2045 forward_list::merge and forward_list::splice_after with unequal allocators Kona Complete 2047 Incorrect "mixed" move-assignment semantics of unique_ptr Kona Complete 2050 Unordered associative containers do not use allocator_traits to define member types Kona Complete 2053 Errors in regex bitmask types Kona Complete 2061 make_move_iterator and arrays Kona Complete 2064 More noexcept issues in basic_string Kona Complete 2065 Minimal allocator interface Kona Complete 2067 packaged_task should have deleted copy c'tor with const parameter Kona Complete 2069 Inconsistent exception spec for basic_string move constructor Kona Complete 2096 Incorrect constraints of future::get in regard to MoveAssignable Kona Complete 2102 Why is std::launch an implementation-defined type? Kona Complete 2071 std::valarray move-assignment Portland Complete 2074 Off by one error in std::reverse_copy Portland Complete 2081 Allocator requirements should include CopyConstructible Portland Complete 2083 const-qualification on weak_ptr::owner_before Portland Complete 2086 Overly generic type support for math functions Portland Complete 2099 Unnecessary constraints of va_start() usage Portland Complete 2103 std::allocator_traits<std::allocator<T>>::propagate_on_container_move_assignment Portland Complete 2105 Inconsistent requirements on const_iterator's value_type Portland Complete 2110 remove can't swap but note says it might Portland Complete 2123 merge() allocator requirements for lists versus forward lists Portland Complete 2005 unordered_map::insert(T&&) protection should apply to map too Portland Complete 2011 Unexpected output required of strings Portland Complete 2048 Unnecessary mem_fn overloads Portland Complete 2049 is_destructible is underspecified Portland Complete 2056 future_errc enums start with value 0 (invalid value for broken_promise) Portland Complete 2058 valarray and begin/end Portland Complete 2091 Misplaced effect in m.try_lock_for() Bristol Complete 2092 Vague Wording for condition_variable_any Bristol Complete 2093 Throws clause of condition_variable::wait with predicate Bristol Complete 2094 duration conversion overflow shouldn't participate in overload resolution Bristol Complete 2122 merge() stability for lists versus forward lists Bristol Complete 2128 Absence of global functions cbegin/cend Bristol Complete 2145 error_category default constructor Bristol Complete 2147 Unclear hint type in Allocator's allocate function Bristol Complete 2148 Hashing enums should be supported directly by std::hash Bristol Complete 2149 Concerns about 20.8/5 Bristol Complete 2162 allocator_traits::max_size missing noexcept Bristol Complete 2163 nth_element requires inconsistent post-conditions Bristol Complete 2169 Missing reset() requirements in unique_ptr specialization Bristol Complete 2172 Does atomic_compare_exchange_* accept v == nullptr arguments? Bristol Complete 2080 Specify when once_flag becomes invalid Bristol Complete 2098 promise throws clauses Bristol Complete 2109 Incorrect requirements for hash specializations Bristol Complete 2130 missing ordering constraints for fences Bristol Complete 2138 atomic_flag::clear ordering constraints Bristol Complete 2140 notify_all_at_thread_exit synchronization Bristol Complete 2144 Missing noexcept specification in type_index Bristol Complete 2174 wstring_convert::converted() should be noexcept Bristol Complete 2175 string_convert and wbuffer_convert validity Bristol Complete 2176 Special members for wstring_convert and wbuffer_convert Bristol Complete 2177 Requirements on Copy/MoveInsertable Bristol Complete 2185 Missing throws clause for future/shared_future::wait_for/wait_until Bristol Complete 2187 vector<bool> is missing emplace and emplace_back member functions Bristol Complete 2190 ordering of condition variable operations, reflects Posix discussion Bristol Complete 2196 Specification of is_*[copy/move]_[constructible/assignable] unclear for non-referencable types Bristol Complete 2197 Specification of is_[un]signed unclear for non-arithmetic types Bristol Complete 2200 Data race avoidance for all containers, not only for sequences Bristol Complete 2203 scoped_allocator_adaptor uses wrong argument types for piecewise construction Bristol Complete 2207 basic_string::at should not have a Requires clause Bristol Complete 2209 assign() overspecified for sequence containers Bristol Complete 2210 Missing allocator-extended constructor for allocator-aware containers Bristol Complete 2211 Replace ambiguous use of "Allocator" in container requirements Bristol Complete 2222 Inconsistency in description of forward_list::splice_after single-element overload Bristol Complete 2225 Unrealistic header inclusion checks required Bristol Complete 2229 Standard code conversion facets underspecified Bristol Complete 2231 DR 704 removes complexity guarantee for clear() Bristol Complete 2235 Undefined behavior without proper requirements on basic_string constructors Bristol Complete 2141 common_type trait produces reference types Chicago Complete 2246 unique_ptr assignment effects w.r.t. deleter Chicago Complete 2247 Type traits and std::nullptr_t Chicago Complete 2085 Wrong description of effect 1 of basic_istream::ignore Chicago Complete 2087 iostream_category() and noexcept Chicago Complete 2143 ios_base::xalloc should be thread-safe Chicago Complete 2150 Unclear specification of find_end Chicago Complete 2180 Exceptions from std::seed_seq operations Chicago Complete 2194 Impossible container requirements for adaptor types Chicago Complete 2013 Do library implementers have the freedom to add constexpr? Chicago Complete 2018 regex_traits::isctype Returns clause is wrong Chicago Complete 2078 Throw specification of async() incomplete Chicago Complete 2097 packaged_task constructors should be constrained Chicago Complete 2100 Timed waiting functions cannot timeout if launch::async policy used Chicago Complete 2120 What should async do if neither 'async' nor 'deferred' is set in policy? Chicago Complete 2159 atomic_flag initialization Chicago Complete 2275 Why is forward_as_tuple not constexpr? Chicago Complete 2284 Inconsistency in allocator_traits::max_size Chicago Complete 2298 is_nothrow_constructible is always false because of create<> Chicago Complete 2300 Redundant sections for map and multimap members should be removed Chicago Complete NB comment: GB9 Remove gets from C++14 Chicago Complete 2135 Unclear requirement for exceptions thrown in condition_variable::wait() Issaquah Complete 2291 std::hash is vulnerable to collision DoS attack Issaquah Complete 2142 packaged_task::operator() synchronization too broad? Issaquah Complete 2240 Probable misuse of term "function scope" in [thread.condition] Issaquah Complete 2252 Strong guarantee on vector::push_back() still broken with C++11? Issaquah Complete 2257 Simplify container requirements with the new algorithms Issaquah Complete 2268 Setting a default argument in the declaration of a member function assign of std::basic_string Issaquah Complete 2271 regex_traits::lookup_classname specification unclear Issaquah Complete 2272 quoted should use char_traits::eq for character comparison Issaquah Complete 2278 User-defined literals for Standard Library types Issaquah Complete 2280 begin / end for arrays should be constexpr and noexcept Issaquah Complete 2285 make_reverse_iterator Issaquah Complete 2299 Effects of inaccessible key_compare::is_transparent type are not clear Issaquah Complete 1450 Contradiction in regex_constants Issaquah Complete 2003 String exception inconsistency in erase. Issaquah Complete 2112 User-defined classes that cannot be derived from Issaquah Complete 2132 std::function ambiguity Issaquah Complete 2182 Container::[const_]reference types are misleadingly specified Issaquah Complete 2188 Reverse iterator does not fully support targets that overload operator& Issaquah Complete 2193 Default constructors for standard library containers are explicit Issaquah Complete 2205 Problematic postconditions of regex_match and regex_search Issaquah Complete 2213 Return value of std::regex_replace Issaquah Complete 2258 a.erase(q1, q2) unable to directly return q2 Issaquah Complete 2263 Comparing iterators and allocator pointers with different const-character Issaquah Complete 2293 Wrong facet used by num_put::do_put Issaquah Complete 2301 Why is std::tie not constexpr? Issaquah Complete 2304 Complexity of count in unordered associative containers Issaquah Complete 2306 match_results::reference should be value_type&, not const value_type& Issaquah Complete 2308 Clarify container destructor requirements w.r.t. std::array Issaquah Complete 2313 tuple_size should always derive from integral_constant Issaquah Complete 2314 apply() should return decltype(auto) and use decay_t before tuple_size Issaquah Complete 2315 weak_ptr should be movable Issaquah Complete 2316 weak_ptr::lock() should be atomic Issaquah Complete 2317 The type property queries should be UnaryTypeTraits returning size_t Issaquah Complete 2320 select_on_container_copy_construction() takes allocators, not containers Issaquah Complete 2322 Associative(initializer_list, stuff) constructors are underspecified Issaquah Complete 2323 vector::resize(n, t)'s specification should be simplified Issaquah Complete 2324 Insert iterator constructors should use addressof() Issaquah Complete 2329 regex_match()/regex_search() with match_results should forbid temporary strings Issaquah Complete 2330 regex("meow", regex::icase) is technically forbidden but should be permitted Issaquah Complete 2332 regex_iterator/regex_token_iterator should forbid temporary regexes Issaquah Complete 2339 Wording issue in nth_element Issaquah Complete 2341 Inconsistency between basic_ostream::seekp(pos) and basic_ostream::seekp(off, dir) Issaquah Complete 2344 quoted()'s interaction with padding is unclear Issaquah Complete 2346 integral_constant's member functions should be marked noexcept Issaquah Complete 2350 min, max, and minmax should be constexpr Issaquah Complete 2356 Stability of erasure in unordered associative containers Issaquah Complete 2357 Remaining "Assignable" requirement Issaquah Complete 2359 How does regex_constants::nosubs affect basic_regex::mark_count()? Issaquah Complete 2360 reverse_iterator::operator*() is unimplementable Issaquah Complete 2104 unique_lock move-assignment should not be noexcept Issaquah Complete 2186 Incomplete action on async/launch::deferred Issaquah Complete 2075 Progress guarantees, lock-free property, and scheduling assumptions Issaquah Complete 2288 Inconsistent requirements for shared mutexes Issaquah Complete

Last Updated: 25-Mar-2014