libc++ C++17 Status

Overview

In November 2014, the C++ standard committee created a draft for the next version of the C++ standard, initially known as “C++1z”. In February 2017, the C++ standard committee approved this draft, and sent it to ISO for approval as C++17.

This page shows the status of libc++; the status of clang’s support of the language features is here.

Attention

Features in unreleased drafts of the standard are subject to change.

The groups that have contributed papers:

  • CWG - Core Language Working group
  • LWG - Library working group
  • SG1 - Study group #1 (Concurrency working group)

Note

“Nothing to do” means that no library changes were needed to implement this change.

Paper Status

Paper # Group Paper Name Meeting Status First released version
N3911 LWG TransformationTrait Alias void_t. Urbana Complete 3.6
N4089 LWG Safe conversions in unique_ptr<T[]>. Urbana In Progress 3.9
N4169 LWG A proposal to add invoke function template Urbana Complete 3.7
N4190 LWG Removing auto_ptr, random_shuffle(), And Old <functional> Stuff. Urbana In Progress  
N4258 LWG Cleaning-up noexcept in the Library. Urbana In Progress 3.7
N4259 CWG Wording for std::uncaught_exceptions Urbana Complete 3.7
N4277 LWG TriviallyCopyable reference_wrapper. Urbana Complete 3.2
N4279 LWG Improved insertion interface for unique-key maps. Urbana Complete 3.7
N4280 LWG Non-member size() and more Urbana Complete 3.6
N4284 LWG Contiguous Iterators. Urbana Complete 3.6
N4285 CWG Cleanup for exception-specification and throw-expression. Urbana Complete 4.0
           
N4387 LWG improving pair and tuple Lenexa Complete 4.0
N4389 LWG bool_constant Lenexa Complete 3.7
N4508 LWG shared_mutex for C++17 Lenexa Complete 3.7
N4366 LWG LWG 2228 missing SFINAE rule Lenexa Complete 3.1
N4510 LWG Minimal incomplete type support for standard containers, revision 4 Lenexa Complete 3.6
           
P0004R1 LWG Remove Deprecated iostreams aliases. Kona Complete 3.8
P0006R0 LWG Adopt Type Traits Variable Templates for C++17. Kona Complete 3.8
P0092R1 LWG Polishing <chrono> Kona Complete 3.8
P0007R1 LWG Constant View: A proposal for a std::as_const helper function template. Kona Complete 3.8
P0156R0 LWG Variadic lock_guard(rev 3). Kona Reverted in Kona 3.9
P0074R0 LWG Making std::owner_less more flexible Kona Complete 3.8
P0013R1 LWG Logical type traits rev 2 Kona Complete 3.8
           
P0024R2 LWG The Parallelism TS Should be Standardized Jacksonville    
P0226R1 LWG Mathematical Special Functions for C++17 Jacksonville    
P0220R1 LWG Adopt Library Fundamentals V1 TS Components for C++17 Jacksonville In Progress  
P0218R1 LWG Adopt the File System TS for C++17 Jacksonville Complete 7.0
P0033R1 LWG Re-enabling shared_from_this Jacksonville Complete 3.9
P0005R4 LWG Adopt not_fn from Library Fundamentals 2 for C++17 Jacksonville Complete 3.9
P0152R1 LWG constexpr atomic::is_always_lock_free Jacksonville Complete 3.9
P0185R1 LWG Adding [nothrow-]swappable traits Jacksonville Complete 3.9
P0253R1 LWG Fixing a design mistake in the searchers interface Jacksonville Complete 3.9
P0025R0 LWG An algorithm to “clamp” a value between a pair of boundary values Jacksonville Complete 3.9
P0154R1 LWG constexpr std::hardware_{constructive,destructive}_interference_size Jacksonville    
P0030R1 LWG Proposal to Introduce a 3-Argument Overload to std::hypot Jacksonville Complete 3.9
P0031R0 LWG A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access Jacksonville Complete 4.0
P0272R1 LWG Give std::string a non-const .data() member function Jacksonville Complete 3.9
P0077R2 LWG is_callable, the missing INVOKE related trait Jacksonville Complete 3.9
           
p0032r3 LWG Homogeneous interface for variant, any and optional Oulu Complete 4.0
p0040r3 LWG Extending memory management tools Oulu Complete 4.0
p0063r3 LWG C++17 should refer to C11 instead of C99 Oulu Complete 7.0
p0067r3 LWG Elementary string conversions Oulu Now P0067R5 n/a
p0083r3 LWG Splicing Maps and Sets Oulu Complete 8.0
p0084r2 LWG Emplace Return Type Oulu Complete 4.0
p0088r3 LWG Variant: a type-safe union for C++17 Oulu Complete 4.0
p0137r1 CWG Core Issue 1776: Replacement of class objects containing reference members Oulu Complete 6.0
p0163r0 LWG shared_ptr::weak_type Oulu Complete 3.9
p0174r2 LWG Deprecating Vestigial Library Parts in C++17 Oulu Partial  
p0175r1 LWG Synopses for the C library Oulu    
p0180r2 LWG Reserve a New Library Namespace for Future Standardization Oulu Nothing To Do n/a
p0181r1 LWG Ordered by Default Oulu Removed in Kona n/a
p0209r2 LWG make_from_tuple: apply for construction Oulu Complete 3.9
p0219r1 LWG Relative Paths for Filesystem Oulu Complete 7.0
p0254r2 LWG Integrating std::string_view and std::string Oulu Complete 4.0
p0258r2 LWG has_unique_object_representations Oulu Complete 6.0
p0295r0 LWG Adopt Selected Library Fundamentals V2 Components for C++17 Oulu Complete 4.0
p0302r1 LWG Removing Allocator Support in std::function Oulu Complete 4.0
p0307r2 LWG Making Optional Greater Equal Again Oulu Complete 4.0
p0336r1 LWG Better Names for Parallel Execution Policies in C++17 Oulu    
p0337r0 LWG Delete operator= for polymorphic_allocator Oulu Complete 3.9
p0346r1 LWG A <random> Nomenclature Tweak Oulu Complete 3.9
p0358r1 LWG Fixes for not_fn Oulu Complete 3.9
p0371r1 LWG Temporarily discourage memory_order_consume Oulu Nothing To Do n/a
p0392r0 LWG Adapting string_view by filesystem paths Oulu Complete 4.0
p0393r3 LWG Making Variant Greater Equal Oulu Complete 4.0
P0394r4 LWG Hotel Parallelifornia: terminate() for Parallel Algorithms Exception Handling Oulu    
           
P0003R5 LWG Removing Deprecated Exception Specifications from C++17 Issaquah Complete 5.0
P0067R5 LWG Elementary string conversions, revision 5 Issaquah Partial  
P0403R1 LWG Literal suffixes for basic_string_view Issaquah Complete 4.0
P0414R2 LWG Merging shared_ptr changes from Library Fundamentals to C++17 Issaquah Complete 11.0
P0418R2 LWG Fail or succeed: there is no atomic lattice Issaquah    
P0426R1 LWG Constexpr for std::char_traits Issaquah Complete 4.0
P0435R1 LWG Resolving LWG Issues re common_type Issaquah Complete 4.0
P0502R0 LWG Throwing out of a parallel algorithm terminates - but how? Issaquah    
P0503R0 LWG Correcting library usage of “literal type” Issaquah Complete 4.0
P0504R0 LWG Revisiting in-place tag types for any/optional/variant Issaquah Complete 4.0
P0505R0 LWG Wording for GB 50 - constexpr for chrono Issaquah Complete 4.0
P0508R0 LWG Wording for GB 58 - structured bindings for node_handles Issaquah    
P0509R1 LWG Updating “Restrictions on exception handling” Issaquah Nothing To Do n/a
P0510R0 LWG Disallowing references, incomplete types, arrays, and empty variants Issaquah Complete 4.0
P0513R0 LWG Poisoning the Hash Issaquah Complete 5.0
P0516R0 LWG Clarify That shared_future’s Copy Operations have Wide Contracts Issaquah Complete 4.0
P0517R0 LWG Make future_error Constructible Issaquah Complete 4.0
P0521R0 LWG Proposed Resolution for CA 14 (shared_ptr use_count/unique) Issaquah Nothing To Do n/a
           
P0156R2 LWG Variadic Lock guard(rev 5) Kona Complete 5.0
P0270R3 CWG Removing C dependencies from signal handler wording Kona    
P0298R3 CWG A byte type definition Kona Complete 5.0
P0317R1 LWG Directory Entry Caching for Filesystem Kona Complete 7.0
P0430R2 LWG File system library on non-POSIX-like operating systems Kona Complete 7.0
P0433R2 LWG Toward a resolution of US7 and US14: Integrating template deduction for class templates into the standard library Kona In Progress [1] 7.0
P0452R1 LWG Unifying <numeric> Parallel Algorithms Kona    
P0467R2 LWG Iterator Concerns for Parallel Algorithms Kona    
P0492R2 LWG Proposed Resolution of C++17 National Body Comments for Filesystems Kona Complete 7.0
P0518R1 LWG Allowing copies as arguments to function objects given to parallel algorithms in response to CH11 Kona    
P0523R1 LWG Wording for CH 10: Complexity of parallel algorithms Kona    
P0548R1 LWG common_type and duration Kona Complete 5.0
P0558R1 LWG Resolving atomic<T> named base class inconsistencies Kona Complete  
P0574R1 LWG Algorithm Complexity Constraints and Parallel Overloads Kona    
P0599R1 LWG noexcept for hash functions Kona Complete 5.0
P0604R0 LWG Resolving GB 55, US 84, US 85, US 86 Kona Complete  
P0607R0 LWG Inline Variables for the Standard Library Kona In Progress [2] 6.0
P0618R0 LWG Deprecating <codecvt> Kona    
P0623R0 LWG Final C++17 Parallel Algorithms Fixes Kona    
           
P0682R1 LWG Repairing elementary string conversions Toronto    
P0739R0 LWG Some improvements to class template argument deduction integration into the standard library Toronto Complete 5.0

Note

[1]P0433: So far, only the <string>, sequence containers, container adaptors and <regex> portions of P0433 have been implemented.
[2]P0607: The parts of P0607 that are not done are the <regex> bits.

Library Working Group Issues Status

Issue # Issue Name Meeting Status First released version
2016 Allocators must be no-throw swappable Urbana Complete  
2118 unique_ptr for array does not support cv qualification conversion of actual argument Urbana Complete  
2170 Aggregates cannot be DefaultConstructible Urbana Complete  
2308 Clarify container destructor requirements w.r.t. std::array Urbana Complete  
2340 Replacement allocation functions declared as inline Urbana Complete  
2354 Unnecessary copying when inserting into maps with braced-init syntax Urbana Complete  
2377 std::align requirements overly strict Urbana Complete  
2396 underlying_type doesn’t say what to do for an incomplete enumeration type Urbana Complete  
2399 shared_ptr’s constructor from unique_ptr should be constrained Urbana Complete  
2400 shared_ptr’s get_deleter() should use addressof() Urbana Complete  
2401 std::function needs more noexcept Urbana Complete  
2404 mismatch()’s complexity needs to be updated Urbana Complete  
2408 SFINAE-friendly common_type / iterator_traits is missing in C++14 Urbana Complete  
         
2106 move_iterator wrapping iterators returning prvalues Urbana Complete  
2129 User specializations of std::initializer_list Urbana Complete  
2212 tuple_size for const pair request <tuple> header Urbana Complete  
2217 operator==(sub_match, string) slices on embedded ‘0’s Urbana Complete  
2230 “see below” for initializer_list constructors of unordered containers Urbana Complete  
2233 bad_function_call::what() unhelpful Urbana Complete  
2266 vector and deque have incorrect insert requirements Urbana Complete  
2325 minmax_element()’s behavior differing from max_element()’s should be noted Urbana Complete  
2361 Apply 2299 resolution throughout library Urbana Complete  
2365 Missing noexcept in shared_ptr::shared_ptr(nullptr_t) Urbana Complete  
2376 bad_weak_ptr::what() overspecified Urbana Complete  
2387 More nested types that must be accessible and unambiguous Urbana Complete  
         
2059 C++0x ambiguity problem with map::erase Lenexa Complete  
2063 Contradictory requirements for string move assignment Lenexa Complete  
2076 Bad CopyConstructible requirement in set constructors Lenexa Complete  
2160 Unintended destruction ordering-specification of resize Lenexa Complete  
2168 Inconsistent specification of uniform_real_distribution constructor Lenexa Complete  
2239 min/max/minmax requirements Lenexa Complete  
2364 deque and vector pop_back don’t specify iterator invalidation requirements Lenexa Complete  
2369 constexpr max(initializer_list) vs max_element Lenexa Complete  
2378 Behaviour of standard exception types Lenexa Complete  
2403 stof() should call strtof() and wcstof() Lenexa Complete  
2406 negative_binomial_distribution should reject p == 1 Lenexa Complete  
2407 packaged_task(allocator_arg_t, const Allocator&, F&&) should neither be constrained nor explicit Lenexa Complete  
2411 shared_ptr is only contextually convertible to bool Lenexa Complete  
2415 Inconsistency between unique_ptr and shared_ptr Lenexa Complete  
2420 function<void(ArgTypes…)> does not discard the return value of the target object Lenexa Complete  
2425 operator delete(void*, size_t) doesn’t invalidate pointers sufficiently Lenexa Complete  
2427 Container adaptors as sequence containers, redux Lenexa Complete  
2428 “External declaration” used without being defined Lenexa Complete  
2433 uninitialized_copy()/etc. should tolerate overloaded operator& Lenexa Complete  
2434 shared_ptr::use_count() is efficient Lenexa Complete  
2437 iterator_traits::reference can and can’t be void Lenexa Complete  
2438 std::iterator inheritance shouldn’t be mandated Lenexa Complete  
2439 unique_copy() sometimes can’t fall back to reading its output Lenexa Complete  
2440 seed_seq::size() should be noexcept Lenexa Complete  
2442 call_once() shouldn’t DECAY_COPY() Lenexa Complete  
2448 Non-normative Container destructor specification Lenexa Complete  
2454 Add raw_storage_iterator::base() member Lenexa Complete  
2455 Allocator default construction should be allowed to throw Lenexa Complete  
2458 N3778 and new library deallocation signatures Lenexa Complete  
2459 std::polar should require a non-negative rho Lenexa Complete  
2464 try_emplace and insert_or_assign misspecified Lenexa Complete  
2467 is_always_equal has slightly inconsistent default Lenexa Complete  
2470 Allocator’s destroy function should be allowed to fail to instantiate Lenexa Complete  
2482 [c.strings] Table 73 mentions nonexistent functions Lenexa Complete  
2488 Placeholders should be allowed and encouraged to be constexpr Lenexa Complete  
         
1169 num_get not fully compatible with strto* Kona Complete  
2072 Unclear wording about capacity of temporary buffers Kona Complete  
2101 Some transformation types can produce impossible types Kona Complete  
2111 Which unexpected&#47;``terminate`` handler is called from the exception handling runtime? Kona Complete  
2119 Missing hash specializations for extended integer types Kona Complete  
2127 Move-construction with raw_storage_iterator Kona Complete  
2133 Attitude to overloaded comma for iterators Kona Complete  
2156 Unordered containers’ reserve(n) reserves for n-1 elements Kona Complete  
2218 Unclear how containers use allocator_traits::construct() Kona Complete  
2219 *INVOKE*-ing a pointer to member with a reference_wrapper as the object expression Kona Complete  
2224 Ambiguous status of access to non-live objects Kona Complete  
2234 assert() should allow usage in constant expressions Kona Complete  
2244 Issue on basic_istream::seekg Kona Complete  
2250 Follow-up On Library Issue 2207 Kona Complete  
2259 Issues in 17.6.5.5 rules for member functions Kona Complete  
2273 regex_match ambiguity Kona Complete  
2336 is_trivially_constructible/is_trivially_assignable traits are always false Kona Complete  
2353 std::next is over-constrained Kona Complete  
2367 pair and tuple are not correctly implemented for is_constructible with no args Kona Complete  
2380 May <cstdlib> provide long ::abs(long) and long long ::abs(long long)? Kona Complete  
2384 Allocator’s deallocate function needs better specification Kona Complete  
2385 function::assign allocator argument doesn’t make sense Kona Complete  
2435 reference_wrapper::operator()’s Remark should be deleted Kona Complete  
2447 Allocators and volatile-qualified value types Kona Complete  
2462 std::ios_base::failure is overspecified Kona Complete  
2466 allocator_traits::max_size() default behavior is incorrect Kona Complete  
2469 Wrong specification of Requires clause of operator[] for map and unordered_map Kona Complete  
2473 basic_filebuf’s relation to C FILE semantics Kona Complete  
2476 scoped_allocator_adaptor is not assignable Kona Complete  
2477 Inconsistency of wordings in std::vector::erase() and std::deque::erase() Kona Complete  
2483 throw_with_nested() should use is_final Kona Complete  
2484 rethrow_if_nested() is doubly unimplementable Kona Complete  
2485 get() should be overloaded for const tuple&& Kona Complete  
2486 mem_fn() should be required to use perfect forwarding Kona Complete  
2487 bind() should be const-overloaded, not cv-overloaded Kona Complete  
2489 mem_fn() should be noexcept Kona Complete  
2492 Clarify requirements for comp Kona Complete  
2495 There is no such thing as an Exception Safety element Kona Complete  
         
2192 Validity and return type of std::abs(0u) is unclear Jacksonville Complete  
2276 Missing requirement on std::promise::set_exception Jacksonville Complete  
2296 std::addressof should be constexpr Jacksonville Complete  
2450 (greater|less|greater_equal|less_equal)<void> do not yield a total order for pointers Jacksonville Complete  
2520 N4089 broke initializing unique_ptr<T[]> from a nullptr Jacksonville Complete  
2522 [fund.ts.v2] Contradiction in set_default_resource specification Jacksonville Complete  
2523 std::promise synopsis shows two set_value_at_thread_exit()’s for no apparent reason Jacksonville Complete  
2537 Constructors for priority_queue taking allocators should call make_heap Jacksonville Complete  
2539 [fund.ts.v2] invocation_trait definition definition doesn’t work for surrogate call functions Jacksonville    
2545 Simplify wording for bind without explicitly specified return type Jacksonville Complete  
2557 Logical operator traits are broken in the zero-argument case Jacksonville Complete  
2558 [fund.ts.v2] Logical operator traits are broken in the zero-argument case Jacksonville Complete  
2559 Error in LWG 2234’s resolution Jacksonville Complete  
2560 is_constructible underspecified when applied to a function type Jacksonville Complete  
2565 std::function’s move constructor should guarantee nothrow for reference_wrappers and function pointers Jacksonville Complete  
2566 Requirements on the first template parameter of container adaptors Jacksonville Complete  
2571 §[map.modifiers]/2 imposes nonsensical requirement on insert(InputIterator, InputIterator) Jacksonville Complete  
2572 The remarks for shared_ptr::operator* should apply to cv-qualified void as well Jacksonville Complete  
2574 [fund.ts.v2] std::experimental::function::operator=(F&&) should be constrained Jacksonville Complete  
2575 [fund.ts.v2] experimental::function::assign should be removed Jacksonville    
2576 istream_iterator and ostream_iterator should use std::addressof Jacksonville Complete  
2577 {shared,unique}_lock should use std::addressof Jacksonville Complete  
2579 Inconsistency wrt Allocators in basic_string assignment vs. basic_string::assign Jacksonville Complete  
2581 Specialization of <type_traits> variable templates should be prohibited Jacksonville Complete  
2582 §[res.on.functions]/2’s prohibition against incomplete types shouldn’t apply to type traits Jacksonville Complete  
2583 There is no way to supply an allocator for basic_string(str, pos) Jacksonville Complete  
2585 forward_list::resize(size_type, const value_type&) effects incorrect Jacksonville Complete  
2586 Wrong value category used in scoped_allocator_adaptor::construct() Jacksonville Complete  
2590 Aggregate initialization for std::array Jacksonville Complete  
         
2181 Exceptions from seed sequence operations Oulu Complete  
2309 mutex::lock() should not throw device_or_resource_busy Oulu Complete  
2310 Public exposition only member in std::array Oulu Complete  
2312 tuple’s constructor constraints need to be phrased more precisely Oulu Complete  
2328 Rvalue stream extraction should use perfect forwarding Oulu Complete  
2393 std::function’s Callable definition is broken Oulu Complete  
2422 std::numeric_limits<T>::is_modulo description: “most machines” errata Oulu Complete  
2426 Issue about compare_exchange Oulu    
2436 Comparators for associative containers should always be CopyConstructible Oulu Complete  
2441 Exact-width atomic typedefs should be provided Oulu Complete  
2451 [fund.ts.v2] optional should ‘forward’ T’s implicit conversions Oulu Nothing To Do  
2509 [fund.ts.v2] any_cast doesn’t work with rvalue reference targets and cannot move with a value target Oulu Complete  
2516 [fund.ts.v2] Public “exposition only” members in observer_ptr Oulu    
2542 Missing const requirements for associative containers Oulu    
2549 Tuple EXPLICIT constructor templates that take tuple parameters end up taking references to temporaries and will create dangling references Oulu Complete  
2550 Wording of unordered container’s clear() method complexity Oulu Complete  
2551 [fund.ts.v2] “Exception safety” cleanup in library fundamentals required Oulu Complete  
2555 [fund.ts.v2] No handling for over-aligned types in optional Oulu Complete  
2573 [fund.ts.v2] std::hash<std::experimental::shared_ptr> does not work for arrays Oulu    
2596 vector::data() should use addressof Oulu Complete  
2667 path::root_directory() description is confusing Oulu Complete  
2669 recursive_directory_iterator effects refers to non-existent functions Oulu Complete  
2670 system_complete refers to undefined variable ‘base’ Oulu Complete  
2671 Errors in Copy Oulu Complete  
2673 status() effects cannot be implemented as specified Oulu Complete  
2674 Bidirectional iterator requirement on path::iterator is very expensive Oulu Complete  
2683 filesystem::copy() says “no effects” Oulu Complete  
2684 priority_queue lacking comparator typedef Oulu Complete  
2685 shared_ptr deleters must not throw on move construction Oulu Complete  
2687 {inclusive,exclusive}_scan misspecified Oulu    
2688 clamp misses preconditions and has extraneous condition on result Oulu Complete  
2689 Parallel versions of std::copy and std::move shouldn’t be in order Oulu    
2698 Effect of assign() on iterators/pointers/references Oulu Complete  
2704 recursive_directory_iterator’s members should require ‘*this is dereferenceable’ Oulu Complete  
2706 Error reporting for recursive_directory_iterator::pop() is under-specified Oulu Complete  
2707 path construction and assignment should have “string_type&&” overloads Oulu Complete  
2709 offsetof is unnecessarily imprecise Oulu    
2710 “Effects: Equivalent to …” doesn’t count “Synchronization:” as determined semantics Oulu Complete  
2711 path is convertible from approximately everything under the sun Oulu Complete  
2716 Specification of shuffle and sample disallows lvalue URNGs Oulu Complete  
2718 Parallelism bug in [algorithms.parallel.exec] p2 Oulu    
2719 permissions function should not be noexcept due to narrow contract Oulu Complete  
2720 permissions function incorrectly specified for symlinks Oulu Complete  
2721 remove_all has incorrect post conditions Oulu Complete  
2723 Do directory_iterator and recursive_directory_iterator become the end iterator upon error? Oulu Complete  
2724 The protected virtual member functions of memory_resource should be private Oulu    
2725 filesystem::exists(const path&, error_code&) error reporting Oulu Complete  
2726 [recursive_]directory_iterator::increment(error_code&) is underspecified Oulu Complete  
2727 Parallel algorithms with constexpr specifier Oulu    
2728 status(p).permissions() and symlink_status(p).permissions() are not specified Oulu Complete  
         
2062 Effect contradictions w/o no-throw guarantee of std::function swaps Issaquah Complete  
2166 Heap property underspecified? Issaquah    
2221 No formatted output operator for nullptr Issaquah Complete  
2223 shrink_to_fit effect on iterator validity Issaquah Complete  
2261 Are containers required to use their ‘pointer’ type internally? Issaquah    
2394 locale::name specification unclear - what is implementation-defined? Issaquah Complete  
2460 LWG issue 2408 and value categories Issaquah Complete  
2468 Self-move-assignment of library types Issaquah    
2475 Allow overwriting of std::basic_string terminator with charT() to allow cleaner interoperation with legacy APIs Issaquah Complete  
2503 multiline option should be added to syntax_option_type Issaquah Complete  
2510 Tag types should not be DefaultConstructible Issaquah Complete  
2514 Type traits must not be final Issaquah Complete  
2518 [fund.ts.v2] Non-member swap for propagate_const should call member swap Issaquah Complete  
2519 Iterator operator-= has gratuitous undefined behaviour Issaquah Complete  
2521 [fund.ts.v2] weak_ptr’s converting move constructor should be modified as well for array support Issaquah    
2525 [fund.ts.v2] get_memory_resource should be const and noexcept Issaquah    
2527 [fund.ts.v2] ALLOCATOR_OF for function::operator= has incorrect default Issaquah    
2531 future::get should explicitly state that the shared state is released Issaquah    
2534 Constrain rvalue stream operators Issaquah Complete  
2536 What should <complex.h> do? Issaquah Complete  
2540 unordered_multimap::insert hint iterator Issaquah Complete  
2543 LWG 2148 (hash support for enum types) seems under-specified Issaquah Complete  
2544 istreambuf_iterator(basic_streambuf<charT, traits>* s) effects unclear when s is 0 Issaquah Complete  
2556 Wide contract for future::share() Issaquah Complete  
2562 Consistent total ordering of pointers by comparison functors Issaquah    
2567 Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits Issaquah Complete  
2568 [fund.ts.v2] Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits Issaquah    
2569 conjunction and disjunction requirements are too strict Issaquah Complete  
2570 [fund.ts.v2] conjunction and disjunction requirements are too strict Issaquah    
2578 Iterator requirements should reference iterator traits Issaquah Complete  
2584 <regex> ECMAScript IdentityEscape is ambiguous Issaquah    
2587 “Convertible to bool” requirement in conjunction and disjunction Issaquah Resolved by 2567  
2588 [fund.ts.v2] “Convertible to bool” requirement in conjunction and disjunction Issaquah    
2589 match_results can’t satisfy the requirements of a container Issaquah Complete  
2591 std::function’s member template target() should not lead to undefined behaviour Issaquah Complete  
2598 addressof works on temporaries Issaquah Complete  
2664 operator/ (and other append) semantics not useful if argument has root Issaquah Complete  
2665 remove_filename() post condition is incorrect Issaquah Complete  
2672 Should is_empty use error_code in its specification? Issaquah Complete  
2678 std::filesystem enum classes overspecified Issaquah Complete  
2679 Inconsistent Use of Effects and Equivalent To Issaquah Complete  
2680 Add “Equivalent to” to filesystem Issaquah Complete  
2681 filesystem::copy() cannot copy symlinks Issaquah Complete  
2682 filesystem::copy() won’t create a symlink to a directory Issaquah Complete  
2686 Why is std::hash specialized for error_code, but not error_condition? Issaquah Complete  
2694 Application of LWG 436 accidentally deleted definition of “facet” Issaquah Complete  
2696 Interaction between make_shared and enable_shared_from_this is underspecified Issaquah Nothing To Do  
2699 Missing restriction in [numeric.requirements] Issaquah Complete  
2712 copy_file(from, to, …) has a number of unspecified error conditions Issaquah Complete  
2722 equivalent incorrectly specifies throws clause Issaquah Complete  
2729 Missing SFINAE on std::pair::operator= Issaquah Complete  
2732 Questionable specification of path::operator/= and path::append Issaquah Complete  
2733 [fund.ts.v2] gcd / lcm and bool Issaquah Complete  
2735 std::abs(short), std::abs(signed char) and others should return int instead of double in order to be compatible with C++98 and C Issaquah Complete  
2736 nullopt_t insufficiently constrained Issaquah Complete  
2738 is_constructible with void types Issaquah Complete  
2739 Issue with time_point non-member subtraction with an unsigned duration Issaquah Complete  
2740 constexpr optional<T>::operator-> Issaquah Complete  
2742 Inconsistent string interface taking string_view Issaquah Complete  
2744 any’s in_place constructors Issaquah Complete  
2745 [fund.ts.v2] Implementability of LWG 2451 Issaquah Complete  
2747 Possibly redundant std::move in [alg.foreach] Issaquah Complete  
2748 swappable traits for optionals Issaquah Complete  
2749 swappable traits for variants Issaquah Complete  
2750 [fund.ts.v2] LWG 2451 conversion constructor constraint Issaquah Nothing To Do  
2752 “Throws:” clauses of async and packaged_task are unimplementable Issaquah    
2755 [string.view.io] uses non-existent basic_string_view::to_string function Issaquah Complete  
2756 C++ WP optional<T> should ‘forward’ T’s implicit conversions Issaquah Complete  
2758 std::string{}.assign(“ABCDE”, 0, 1) is ambiguous Issaquah Complete  
2759 gcd / lcm and bool for the WP Issaquah Complete  
2760 non-const basic_string::data should not invalidate iterators Issaquah Complete  
2765 Did LWG 1123 go too far? Issaquah Complete  
2767 not_fn call_wrapper can form invalid types Issaquah Complete  
2769 Redundant const in the return type of any_cast(const any&) Issaquah Complete  
2771 Broken Effects of some basic_string::compare functions in terms of basic_string_view Issaquah Complete  
2773 Making std::ignore constexpr Issaquah Complete  
2777 basic_string_view::copy should use char_traits::copy Issaquah Complete  
2778 basic_string_view is missing constexpr Issaquah Complete  
         
2260 Missing requirement for Allocator::pointer Kona Complete  
2676 Provide filesystem::path overloads for File-based streams Kona Complete  
2768 any_cast and move semantics Kona Complete  
2769 Redundant const in the return type of any_cast(const any&) Kona Complete  
2781 Contradictory requirements for std::function and std::reference_wrapper Kona Complete  
2782 scoped_allocator_adaptor constructors must be constrained Kona Complete  
2784 Resolution to LWG 2484 is missing “otherwise, no effects” and is hard to parse Kona Complete  
2785 quoted should work with basic_string_view Kona Complete  
2786 Annex C should mention shared_ptr changes for array support Kona Complete  
2787 §[file_status.cons] doesn’t match class definition Kona Complete  
2788 basic_string range mutators unintentionally require a default constructible allocator Kona Complete  
2789 Equivalence of contained objects Kona Complete  
2790 Missing specification of istreambuf_iterator::operator-> Kona Complete  
2794 Missing requirements for allocator pointers Kona Nothing To Do  
2795 §[global.functions] provides incorrect example of ADL use Kona Complete  
2796 tuple should be a literal type Kona Complete  
2801 Default-constructibility of unique_ptr Kona Complete  
2802 shared_ptr constructor requirements for a deleter Kona Complete  
2804 Unconditional constexpr default constructor for istream_iterator Kona Complete  
2806 Base class of bad_optional_access Kona Complete  
2807 std::invoke should use std::is_nothrow_callable Kona Complete  
2812 Range access is available with <string_view> Kona Complete  
2824 list::sort should say that the order of elements is unspecified if an exception is thrown Kona Complete  
2826 string_view iterators use old wording Kona Complete  
2834 Resolution LWG 2223 is missing wording about end iterators Kona Complete  
2835 LWG 2536 seems to misspecify <tgmath.h> Kona Complete  
2837 gcd and lcm should support a wider range of input values Kona Complete  
2838 is_literal_type specification needs a little cleanup Kona Complete  
2842 in_place_t check for optional::optional(U&&) should decay U Kona Complete  
2850 std::function move constructor does unnecessary work Kona Complete  
2853 Possible inconsistency in specification of erase in [vector.modifiers] Kona Complete  
2855 std::throw_with_nested(“string_literal”) Kona Complete  
2857 {variant,optional,any}::emplace should return the constructed value Kona Complete  
2861 basic_string should require that charT match traits::char_type Kona Complete  
2866 Incorrect derived classes constraints Kona Nothing To Do  
2868 Missing specification of bad_any_cast::what() Kona Complete  
2872 Add definition for direct-non-list-initialization Kona Complete  
2873 Add noexcept to several shared_ptr related functions Kona Complete  
2874 Constructor shared_ptr::shared_ptr(Y*) should be constrained Kona Complete 13.0
2875 shared_ptr::shared_ptr(Y*, D, […]) constructors should be constrained Kona Complete  
2876 shared_ptr::shared_ptr(const weak_ptr<Y>&) constructor should be constrained Kona    
2878 Missing DefaultConstructible requirement for istream_iterator default constructor Kona Complete  
2890 The definition of ‘object state’ applies only to class types Kona Complete  
2900 The copy and move constructors of optional are not constexpr Kona Complete  
2903 The form of initialization for the emplace-constructors is not specified Kona Complete  
2904 Make variant move-assignment more exception safe Kona Complete  
2905 is_constructible_v<unique_ptr<P, D>, P, D const &> should be false when D is not copy constructible Kona Complete  
2908 The less-than operator for shared pointers could do more Kona Complete  
2911 An is_aggregate type trait is needed Kona Complete  
2921 packaged_task and type-erased allocators Kona Complete  
2934 optional<const T> doesn’t compare with T Kona Complete  
         
2901 Variants cannot properly support allocators Toronto Complete  
2955 to_chars / from_chars depend on std::string Toronto Resolved by P0682R1  
2956 filesystem::canonical() still defined in terms of absolute(p, base) Toronto Complete