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
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<size_t, N> 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