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  | 
|---|---|---|---|---|---|
LWG  | 
TransformationTrait Alias   | 
Urbana  | 
Complete  | 
3.6  | 
|
LWG  | 
Safe conversions in   | 
Urbana  | 
In Progress  | 
3.9  | 
|
LWG  | 
A proposal to add invoke function template  | 
Urbana  | 
Complete  | 
3.7  | 
|
LWG  | 
Removing auto_ptr, random_shuffle(), And Old <functional> Stuff.  | 
Urbana  | 
Complete  | 
15.0  | 
|
LWG  | 
Cleaning-up noexcept in the Library.  | 
Urbana  | 
In Progress  | 
3.7  | 
|
CWG  | 
Wording for std::uncaught_exceptions  | 
Urbana  | 
Complete  | 
3.7  | 
|
LWG  | 
TriviallyCopyable   | 
Urbana  | 
Complete  | 
3.2  | 
|
LWG  | 
Improved insertion interface for unique-key maps.  | 
Urbana  | 
Complete  | 
3.7  | 
|
LWG  | 
Non-member size() and more  | 
Urbana  | 
Complete  | 
3.6  | 
|
LWG  | 
Contiguous Iterators.  | 
Urbana  | 
Complete  | 
3.6  | 
|
CWG  | 
Cleanup for exception-specification and throw-expression.  | 
Urbana  | 
Complete  | 
4.0  | 
|
LWG  | 
improving pair and tuple  | 
Lenexa  | 
Complete  | 
4.0  | 
|
LWG  | 
bool_constant  | 
Lenexa  | 
Complete  | 
3.7  | 
|
LWG  | 
shared_mutex for C++17  | 
Lenexa  | 
Complete  | 
3.7  | 
|
LWG  | 
LWG 2228 missing SFINAE rule  | 
Lenexa  | 
Complete  | 
3.1  | 
|
LWG  | 
Minimal incomplete type support for standard containers, revision 4  | 
Lenexa  | 
Complete  | 
3.6  | 
|
LWG  | 
Remove Deprecated iostreams aliases.  | 
Kona  | 
Complete  | 
3.8  | 
|
LWG  | 
Adopt Type Traits Variable Templates for C++17.  | 
Kona  | 
Complete  | 
3.8  | 
|
LWG  | 
Polishing <chrono>  | 
Kona  | 
Complete  | 
3.8  | 
|
LWG  | 
Constant View: A proposal for a   | 
Kona  | 
Complete  | 
3.8  | 
|
LWG  | 
Variadic lock_guard(rev 3).  | 
Kona  | 
Reverted in Kona  | 
3.9  | 
|
LWG  | 
Making   | 
Kona  | 
Complete  | 
3.8  | 
|
LWG  | 
Logical type traits rev 2  | 
Kona  | 
Complete  | 
3.8  | 
|
LWG  | 
The Parallelism TS Should be Standardized  | 
Jacksonville  | 
|||
LWG  | 
Mathematical Special Functions for C++17  | 
Jacksonville  | 
|||
LWG  | 
Adopt Library Fundamentals V1 TS Components for C++17  | 
Jacksonville  | 
In Progress  | 
||
LWG  | 
Adopt the File System TS for C++17  | 
Jacksonville  | 
Complete  | 
7.0  | 
|
LWG  | 
Re-enabling shared_from_this  | 
Jacksonville  | 
Complete  | 
3.9  | 
|
LWG  | 
Adopt not_fn from Library Fundamentals 2 for C++17  | 
Jacksonville  | 
Complete  | 
3.9  | 
|
LWG  | 
constexpr   | 
Jacksonville  | 
Complete  | 
3.9  | 
|
LWG  | 
Adding [nothrow-]swappable traits  | 
Jacksonville  | 
Complete  | 
3.9  | 
|
LWG  | 
Fixing a design mistake in the searchers interface  | 
Jacksonville  | 
Complete  | 
3.9  | 
|
LWG  | 
An algorithm to “clamp” a value between a pair of boundary values  | 
Jacksonville  | 
Complete  | 
3.9  | 
|
LWG  | 
constexpr std::hardware_{constructive,destructive}_interference_size  | 
Jacksonville  | 
Partial 3  | 
15.0  | 
|
LWG  | 
Proposal to Introduce a 3-Argument Overload to std::hypot  | 
Jacksonville  | 
Complete  | 
3.9  | 
|
LWG  | 
A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access  | 
Jacksonville  | 
Complete  | 
4.0  | 
|
LWG  | 
Give   | 
Jacksonville  | 
Complete  | 
3.9  | 
|
LWG  | 
  | 
Jacksonville  | 
Complete  | 
3.9  | 
|
LWG  | 
Homogeneous interface for variant, any and optional  | 
Oulu  | 
Complete  | 
4.0  | 
|
LWG  | 
Extending memory management tools  | 
Oulu  | 
Complete  | 
4.0  | 
|
LWG  | 
C++17 should refer to C11 instead of C99  | 
Oulu  | 
Complete  | 
7.0  | 
|
LWG  | 
Elementary string conversions  | 
Oulu  | 
Now P0067R5  | 
n/a  | 
|
LWG  | 
Splicing Maps and Sets  | 
Oulu  | 
Complete  | 
8.0  | 
|
LWG  | 
Emplace Return Type  | 
Oulu  | 
Complete  | 
4.0  | 
|
LWG  | 
Variant: a type-safe union for C++17  | 
Oulu  | 
Complete  | 
4.0  | 
|
CWG  | 
Core Issue 1776: Replacement of class objects containing reference members  | 
Oulu  | 
Complete  | 
6.0  | 
|
LWG  | 
shared_ptr::weak_type  | 
Oulu  | 
Complete  | 
3.9  | 
|
LWG  | 
Deprecating Vestigial Library Parts in C++17  | 
Oulu  | 
Complete  | 
15.0  | 
|
LWG  | 
Synopses for the C library  | 
Oulu  | 
|||
LWG  | 
Reserve a New Library Namespace for Future Standardization  | 
Oulu  | 
Nothing To Do  | 
n/a  | 
|
LWG  | 
Ordered by Default  | 
Oulu  | 
Removed in Kona  | 
n/a  | 
|
LWG  | 
make_from_tuple: apply for construction  | 
Oulu  | 
Complete  | 
3.9  | 
|
LWG  | 
Relative Paths for Filesystem  | 
Oulu  | 
Complete  | 
7.0  | 
|
LWG  | 
Integrating std::string_view and std::string  | 
Oulu  | 
Complete  | 
4.0  | 
|
LWG  | 
has_unique_object_representations  | 
Oulu  | 
Complete  | 
6.0  | 
|
LWG  | 
Adopt Selected Library Fundamentals V2 Components for C++17  | 
Oulu  | 
Complete  | 
4.0  | 
|
LWG  | 
Removing Allocator Support in std::function  | 
Oulu  | 
Complete  | 
4.0  | 
|
LWG  | 
Making Optional Greater Equal Again  | 
Oulu  | 
Complete  | 
4.0  | 
|
LWG  | 
Better Names for Parallel Execution Policies in C++17  | 
Oulu  | 
|||
LWG  | 
Delete   | 
Oulu  | 
Complete  | 
3.9  | 
|
LWG  | 
A <random> Nomenclature Tweak  | 
Oulu  | 
Complete  | 
3.9  | 
|
LWG  | 
Fixes for not_fn  | 
Oulu  | 
Complete  | 
3.9  | 
|
LWG  | 
Temporarily discourage memory_order_consume  | 
Oulu  | 
Nothing To Do  | 
n/a  | 
|
LWG  | 
Adapting string_view by filesystem paths  | 
Oulu  | 
Complete  | 
4.0  | 
|
LWG  | 
Making Variant Greater Equal  | 
Oulu  | 
Complete  | 
4.0  | 
|
LWG  | 
Hotel Parallelifornia: terminate() for Parallel Algorithms Exception Handling  | 
Oulu  | 
|||
LWG  | 
Removing Deprecated Exception Specifications from C++17  | 
Issaquah  | 
Complete  | 
5.0  | 
|
LWG  | 
Elementary string conversions, revision 5  | 
Issaquah  | 
Partial 1  | 
||
LWG  | 
Literal suffixes for   | 
Issaquah  | 
Complete  | 
4.0  | 
|
LWG  | 
Merging shared_ptr changes from Library Fundamentals to C++17  | 
Issaquah  | 
Complete  | 
11.0  | 
|
LWG  | 
Fail or succeed: there is no atomic lattice  | 
Issaquah  | 
|||
LWG  | 
Constexpr for   | 
Issaquah  | 
Complete  | 
4.0  | 
|
LWG  | 
Resolving LWG Issues re   | 
Issaquah  | 
Complete  | 
4.0  | 
|
LWG  | 
Throwing out of a parallel algorithm terminates - but how?  | 
Issaquah  | 
|||
LWG  | 
Correcting library usage of “literal type”  | 
Issaquah  | 
Complete  | 
4.0  | 
|
LWG  | 
Revisiting in-place tag types for any/optional/variant  | 
Issaquah  | 
Complete  | 
4.0  | 
|
LWG  | 
Wording for GB 50 - constexpr for chrono  | 
Issaquah  | 
Complete  | 
4.0  | 
|
LWG  | 
Wording for GB 58 - structured bindings for node_handles  | 
Issaquah  | 
|||
LWG  | 
Updating “Restrictions on exception handling”  | 
Issaquah  | 
Nothing To Do  | 
n/a  | 
|
LWG  | 
Disallowing references, incomplete types, arrays, and empty variants  | 
Issaquah  | 
Complete  | 
4.0  | 
|
LWG  | 
Poisoning the Hash  | 
Issaquah  | 
Complete  | 
5.0  | 
|
LWG  | 
Clarify That shared_future’s Copy Operations have Wide Contracts  | 
Issaquah  | 
Complete  | 
4.0  | 
|
LWG  | 
Make future_error Constructible  | 
Issaquah  | 
Complete  | 
4.0  | 
|
LWG  | 
Proposed Resolution for CA 14 (shared_ptr use_count/unique)  | 
Issaquah  | 
Nothing To Do  | 
n/a  | 
|
LWG  | 
Variadic Lock guard(rev 5)  | 
Kona  | 
Complete  | 
5.0  | 
|
CWG  | 
Removing C dependencies from signal handler wording  | 
Kona  | 
|||
CWG  | 
A byte type definition  | 
Kona  | 
Complete  | 
5.0  | 
|
LWG  | 
Directory Entry Caching for Filesystem  | 
Kona  | 
Complete  | 
7.0  | 
|
LWG  | 
File system library on non-POSIX-like operating systems  | 
Kona  | 
Complete  | 
7.0  | 
|
LWG  | 
Toward a resolution of US7 and US14: Integrating template deduction for class templates into the standard library  | 
Kona  | 
Complete  | 
14.0  | 
|
LWG  | 
Unifying <numeric> Parallel Algorithms  | 
Kona  | 
|||
LWG  | 
Iterator Concerns for Parallel Algorithms  | 
Kona  | 
|||
LWG  | 
Proposed Resolution of C++17 National Body Comments for Filesystems  | 
Kona  | 
Complete  | 
7.0  | 
|
LWG  | 
Allowing copies as arguments to function objects given to parallel algorithms in response to CH11  | 
Kona  | 
|||
LWG  | 
Wording for CH 10: Complexity of parallel algorithms  | 
Kona  | 
|||
LWG  | 
common_type and duration  | 
Kona  | 
Complete  | 
5.0  | 
|
LWG  | 
Resolving atomic<T> named base class inconsistencies  | 
Kona  | 
Complete  | 
||
LWG  | 
Algorithm Complexity Constraints and Parallel Overloads  | 
Kona  | 
|||
LWG  | 
noexcept for hash functions  | 
Kona  | 
Complete  | 
5.0  | 
|
LWG  | 
Resolving GB 55, US 84, US 85, US 86  | 
Kona  | 
Complete  | 
||
LWG  | 
Inline Variables for the Standard Library  | 
Kona  | 
In Progress 2  | 
6.0  | 
|
LWG  | 
Deprecating <codecvt>  | 
Kona  | 
Complete  | 
15.0  | 
|
LWG  | 
Final C++17 Parallel Algorithms Fixes  | 
Kona  | 
|||
LWG  | 
Repairing elementary string conversions  | 
Toronto  | 
|||
LWG  | 
Some improvements to class template argument deduction integration into the standard library  | 
Toronto  | 
Complete  | 
5.0  | 
Note
- 1
 P0067:
std::(to|from)_charsfor integrals has been available since version 7.0.std::to_charsforfloatanddoublesince version 14.0std::to_charsforlong doubleuses the implementation fordouble.- 2
 P0607: The parts of P0607 that are not done are the
<regex>bits.- 3
 P0154: This is currently not implemented for clang because clang does not implement the required macros.
Library Working Group Issues Status¶
Issue #  | 
Issue Name  | 
Meeting  | 
Status  | 
First released version  | 
|---|---|---|---|---|
Allocators must be no-throw swappable  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
Aggregates cannot be   | 
Urbana  | 
Complete  | 
||
Clarify container destructor requirements w.r.t.   | 
Urbana  | 
Complete  | 
||
Replacement allocation functions declared as inline  | 
Urbana  | 
Complete  | 
||
Unnecessary copying when inserting into maps with braced-init syntax  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
SFINAE-friendly   | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
User specializations of   | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
“see below” for   | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
Apply 2299 resolution throughout library  | 
Urbana  | 
Complete  | 
||
Missing noexcept in   | 
Urbana  | 
Complete  | 
||
  | 
Urbana  | 
Complete  | 
||
More nested types that must be accessible and unambiguous  | 
Urbana  | 
Complete  | 
||
C++0x ambiguity problem with map::erase  | 
Lenexa  | 
Complete  | 
||
Contradictory requirements for string move assignment  | 
Lenexa  | 
Complete  | 
||
Bad CopyConstructible requirement in set constructors  | 
Lenexa  | 
Complete  | 
||
Unintended destruction ordering-specification of resize  | 
Lenexa  | 
Complete  | 
||
Inconsistent specification of uniform_real_distribution constructor  | 
Lenexa  | 
Complete  | 
||
min/max/minmax requirements  | 
Lenexa  | 
Complete  | 
||
deque and vector pop_back don’t specify iterator invalidation requirements  | 
Lenexa  | 
Complete  | 
||
constexpr max(initializer_list) vs max_element  | 
Lenexa  | 
Complete  | 
||
Behaviour of standard exception types  | 
Lenexa  | 
Complete  | 
||
stof() should call strtof() and wcstof()  | 
Lenexa  | 
Complete  | 
||
negative_binomial_distribution should reject p == 1  | 
Lenexa  | 
Complete  | 
||
packaged_task(allocator_arg_t, const Allocator&, F&&) should neither be constrained nor explicit  | 
Lenexa  | 
Complete  | 
||
shared_ptr is only contextually convertible to bool  | 
Lenexa  | 
Complete  | 
||
Inconsistency between unique_ptr and shared_ptr  | 
Lenexa  | 
Complete  | 
||
function<void(ArgTypes…)> does not discard the return value of the target object  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
Container adaptors as sequence containers, redux  | 
Lenexa  | 
Complete  | 
||
“External declaration” used without being defined  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
Non-normative Container destructor specification  | 
Lenexa  | 
Complete  | 
||
Add   | 
Lenexa  | 
Complete  | 
||
Allocator default construction should be allowed to throw  | 
Lenexa  | 
Complete  | 
||
N3778 and new library deallocation signatures  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
  | 
Lenexa  | 
Complete  | 
||
Allocator’s destroy function should be allowed to fail to instantiate  | 
Lenexa  | 
Complete  | 
||
[c.strings] Table 73 mentions nonexistent functions  | 
Lenexa  | 
Complete  | 
||
Placeholders should be allowed and encouraged to be constexpr  | 
Lenexa  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
Unclear wording about capacity of temporary buffers  | 
Kona  | 
Complete  | 
||
Some transformation types can produce impossible types  | 
Kona  | 
Complete  | 
||
Which   | 
Kona  | 
Complete  | 
||
Missing   | 
Kona  | 
Complete  | 
||
Move-construction with   | 
Kona  | 
Complete  | 
||
Attitude to overloaded comma for iterators  | 
Kona  | 
Complete  | 
||
Unordered containers’   | 
Kona  | 
Complete  | 
||
Unclear how containers use   | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
Ambiguous status of access to non-live objects  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
Issue on   | 
Kona  | 
Complete  | 
||
Follow-up On Library Issue 2207  | 
Kona  | 
Complete  | 
||
Issues in 17.6.5.5 rules for member functions  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
May   | 
Kona  | 
Complete  | 
||
Allocator’s   | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
Allocators and   | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
Wrong specification of Requires clause of   | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
Inconsistency of wordings in   | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
||
Clarify requirements for   | 
Kona  | 
Complete  | 
||
There is no such thing as an Exception Safety element  | 
Kona  | 
Complete  | 
||
Validity and return type of   | 
Jacksonville  | 
Complete  | 
||
Missing requirement on   | 
Jacksonville  | 
Complete  | 
||
  | 
Jacksonville  | 
Complete  | 
||
  | 
Jacksonville  | 
Complete  | 
||
N4089 broke initializing   | 
Jacksonville  | 
Complete  | 
||
[fund.ts.v2] Contradiction in   | 
Jacksonville  | 
Complete  | 
||
  | 
Jacksonville  | 
Complete  | 
||
Constructors for   | 
Jacksonville  | 
Complete  | 
||
[fund.ts.v2]   | 
Jacksonville  | 
|||
Simplify wording for   | 
Jacksonville  | 
Complete  | 
||
Logical operator traits are broken in the zero-argument case  | 
Jacksonville  | 
Complete  | 
||
[fund.ts.v2] Logical operator traits are broken in the zero-argument case  | 
Jacksonville  | 
Complete  | 
||
Error in LWG 2234’s resolution  | 
Jacksonville  | 
Complete  | 
||
  | 
Jacksonville  | 
Complete  | 
||
  | 
Jacksonville  | 
Complete  | 
||
Requirements on the first template parameter of container adaptors  | 
Jacksonville  | 
Complete  | 
||
§[map.modifiers]/2 imposes nonsensical requirement on   | 
Jacksonville  | 
Complete  | 
||
The remarks for   | 
Jacksonville  | 
Complete  | 
||
[fund.ts.v2]   | 
Jacksonville  | 
Complete  | 
||
[fund.ts.v2]   | 
Jacksonville  | 
|||
  | 
Jacksonville  | 
Complete  | 
||
  | 
Jacksonville  | 
Complete  | 
||
Inconsistency wrt Allocators in   | 
Jacksonville  | 
Complete  | 
||
Specialization of   | 
Jacksonville  | 
Complete  | 
||
§[res.on.functions]/2’s prohibition against incomplete types shouldn’t apply to type traits  | 
Jacksonville  | 
Complete  | 
||
There is no way to supply an allocator for   | 
Jacksonville  | 
Complete  | 
||
  | 
Jacksonville  | 
Complete  | 
||
Wrong value category used in   | 
Jacksonville  | 
Complete  | 
||
Aggregate initialization for   | 
Jacksonville  | 
Complete  | 
||
Exceptions from seed sequence operations  | 
Oulu  | 
Complete  | 
||
mutex::lock() should not throw device_or_resource_busy  | 
Oulu  | 
Complete  | 
||
Public exposition only member in std::array  | 
Oulu  | 
Complete  | 
||
tuple’s constructor constraints need to be phrased more precisely  | 
Oulu  | 
Complete  | 
||
Rvalue stream extraction should use perfect forwarding  | 
Oulu  | 
Complete  | 
||
std::function’s Callable definition is broken  | 
Oulu  | 
Complete  | 
||
  | 
Oulu  | 
Complete  | 
||
Issue about compare_exchange  | 
Oulu  | 
|||
Comparators for associative containers should always be CopyConstructible  | 
Oulu  | 
Complete  | 
||
Exact-width atomic typedefs should be provided  | 
Oulu  | 
Complete  | 
||
[fund.ts.v2] optional should ‘forward’ T’s implicit conversions  | 
Oulu  | 
Nothing To Do  | 
||
[fund.ts.v2] any_cast doesn’t work with rvalue reference targets and cannot move with a value target  | 
Oulu  | 
Complete  | 
||
[fund.ts.v2] Public “exposition only” members in observer_ptr  | 
Oulu  | 
|||
Missing const requirements for associative containers  | 
Oulu  | 
|||
Tuple EXPLICIT constructor templates that take tuple parameters end up taking references to temporaries and will create dangling references  | 
Oulu  | 
Complete  | 
||
Wording of unordered container’s clear() method complexity  | 
Oulu  | 
Complete  | 
||
[fund.ts.v2] “Exception safety” cleanup in library fundamentals required  | 
Oulu  | 
Complete  | 
||
[fund.ts.v2] No handling for over-aligned types in optional  | 
Oulu  | 
Complete  | 
||
[fund.ts.v2] std::hash<std::experimental::shared_ptr> does not work for arrays  | 
Oulu  | 
|||
vector::data() should use addressof  | 
Oulu  | 
Complete  | 
||
path::root_directory() description is confusing  | 
Oulu  | 
Complete  | 
||
recursive_directory_iterator effects refers to non-existent functions  | 
Oulu  | 
Complete  | 
||
system_complete refers to undefined variable ‘base’  | 
Oulu  | 
Complete  | 
||
Errors in Copy  | 
Oulu  | 
Complete  | 
||
status() effects cannot be implemented as specified  | 
Oulu  | 
Complete  | 
||
Bidirectional iterator requirement on path::iterator is very expensive  | 
Oulu  | 
Complete  | 
||
filesystem::copy() says “no effects”  | 
Oulu  | 
Complete  | 
||
priority_queue lacking comparator typedef  | 
Oulu  | 
Complete  | 
||
shared_ptr deleters must not throw on move construction  | 
Oulu  | 
Complete  | 
||
{inclusive,exclusive}_scan misspecified  | 
Oulu  | 
|||
clamp misses preconditions and has extraneous condition on result  | 
Oulu  | 
Complete  | 
||
Parallel versions of std::copy and std::move shouldn’t be in order  | 
Oulu  | 
|||
Effect of assign() on iterators/pointers/references  | 
Oulu  | 
Complete  | 
||
recursive_directory_iterator’s members should require ‘  | 
Oulu  | 
Complete  | 
||
Error reporting for recursive_directory_iterator::pop() is under-specified  | 
Oulu  | 
Complete  | 
||
path construction and assignment should have “string_type&&” overloads  | 
Oulu  | 
Complete  | 
||
offsetof is unnecessarily imprecise  | 
Oulu  | 
|||
“Effects: Equivalent to …” doesn’t count “Synchronization:” as determined semantics  | 
Oulu  | 
Complete  | 
||
path is convertible from approximately everything under the sun  | 
Oulu  | 
Complete  | 
||
Specification of shuffle and sample disallows lvalue URNGs  | 
Oulu  | 
Complete  | 
||
Parallelism bug in [algorithms.parallel.exec] p2  | 
Oulu  | 
|||
permissions function should not be noexcept due to narrow contract  | 
Oulu  | 
Complete  | 
||
permissions function incorrectly specified for symlinks  | 
Oulu  | 
Complete  | 
||
remove_all has incorrect post conditions  | 
Oulu  | 
Complete  | 
||
Do directory_iterator and recursive_directory_iterator become the end iterator upon error?  | 
Oulu  | 
Complete  | 
||
The protected virtual member functions of memory_resource should be private  | 
Oulu  | 
|||
filesystem::exists(const path&, error_code&) error reporting  | 
Oulu  | 
Complete  | 
||
  | 
Oulu  | 
Complete  | 
||
Parallel algorithms with constexpr specifier  | 
Oulu  | 
|||
status(p).permissions() and symlink_status(p).permissions() are not specified  | 
Oulu  | 
Complete  | 
||
Effect contradictions w/o no-throw guarantee of std::function swaps  | 
Issaquah  | 
Complete  | 
||
Heap property underspecified?  | 
Issaquah  | 
|||
No formatted output operator for nullptr  | 
Issaquah  | 
Complete  | 
||
shrink_to_fit effect on iterator validity  | 
Issaquah  | 
Complete  | 
||
Are containers required to use their ‘pointer’ type internally?  | 
Issaquah  | 
|||
locale::name specification unclear - what is implementation-defined?  | 
Issaquah  | 
Complete  | 
||
LWG issue 2408 and value categories  | 
Issaquah  | 
Complete  | 
||
Self-move-assignment of library types  | 
Issaquah  | 
|||
Allow overwriting of std::basic_string terminator with charT() to allow cleaner interoperation with legacy APIs  | 
Issaquah  | 
Complete  | 
||
multiline option should be added to syntax_option_type  | 
Issaquah  | 
Complete  | 
||
Tag types should not be DefaultConstructible  | 
Issaquah  | 
Complete  | 
||
Type traits must not be final  | 
Issaquah  | 
Complete  | 
||
[fund.ts.v2] Non-member swap for propagate_const should call member swap  | 
Issaquah  | 
Complete  | 
||
Iterator operator-= has gratuitous undefined behaviour  | 
Issaquah  | 
Complete  | 
||
[fund.ts.v2] weak_ptr’s converting move constructor should be modified as well for array support  | 
Issaquah  | 
|||
[fund.ts.v2] get_memory_resource should be const and noexcept  | 
Issaquah  | 
|||
[fund.ts.v2] ALLOCATOR_OF for function::operator= has incorrect default  | 
Issaquah  | 
|||
future::get should explicitly state that the shared state is released  | 
Issaquah  | 
Nothing To Do  | 
||
Constrain rvalue stream operators  | 
Issaquah  | 
Complete  | 
||
What should <complex.h> do?  | 
Issaquah  | 
Complete  | 
||
unordered_multimap::insert hint iterator  | 
Issaquah  | 
Complete  | 
||
LWG 2148 (hash support for enum types) seems under-specified  | 
Issaquah  | 
Complete  | 
||
  | 
Issaquah  | 
Complete  | 
||
Wide contract for future::share()  | 
Issaquah  | 
Complete  | 
||
Consistent total ordering of pointers by comparison functors  | 
Issaquah  | 
|||
Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits  | 
Issaquah  | 
Complete  | 
||
[fund.ts.v2] Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits  | 
Issaquah  | 
Complete  | 
15.0  | 
|
conjunction and disjunction requirements are too strict  | 
Issaquah  | 
Complete  | 
15.0  | 
|
[fund.ts.v2] conjunction and disjunction requirements are too strict  | 
Issaquah  | 
|||
Iterator requirements should reference iterator traits  | 
Issaquah  | 
Complete  | 
||
<regex> ECMAScript IdentityEscape is ambiguous  | 
Issaquah  | 
|||
“Convertible to bool” requirement in conjunction and disjunction  | 
Issaquah  | 
Resolved by 2567  | 
||
[fund.ts.v2] “Convertible to bool” requirement in conjunction and disjunction  | 
Issaquah  | 
Resolved by 2568  | 
||
match_results can’t satisfy the requirements of a container  | 
Issaquah  | 
Complete  | 
||
std::function’s member template target() should not lead to undefined behaviour  | 
Issaquah  | 
Complete  | 
||
addressof works on temporaries  | 
Issaquah  | 
Complete  | 
||
operator/ (and other append) semantics not useful if argument has root  | 
Issaquah  | 
Complete  | 
||
remove_filename() post condition is incorrect  | 
Issaquah  | 
Complete  | 
||
Should   | 
Issaquah  | 
Complete  | 
||
std::filesystem enum classes overspecified  | 
Issaquah  | 
Complete  | 
||
Inconsistent Use of Effects and Equivalent To  | 
Issaquah  | 
Complete  | 
||
Add “Equivalent to” to filesystem  | 
Issaquah  | 
Complete  | 
||
filesystem::copy() cannot copy symlinks  | 
Issaquah  | 
Complete  | 
||
filesystem::copy() won’t create a symlink to a directory  | 
Issaquah  | 
Complete  | 
||
Why is std::hash specialized for error_code, but not error_condition?  | 
Issaquah  | 
Complete  | 
||
Application of LWG 436 accidentally deleted definition of “facet”  | 
Issaquah  | 
Complete  | 
||
Interaction between make_shared and enable_shared_from_this is underspecified  | 
Issaquah  | 
Nothing To Do  | 
||
Missing restriction in [numeric.requirements]  | 
Issaquah  | 
Complete  | 
||
copy_file(from, to, …) has a number of unspecified error conditions  | 
Issaquah  | 
Complete  | 
||
equivalent incorrectly specifies throws clause  | 
Issaquah  | 
Complete  | 
||
Missing SFINAE on std::pair::operator=  | 
Issaquah  | 
Complete  | 
||
Questionable specification of path::operator/= and path::append  | 
Issaquah  | 
Complete  | 
||
[fund.ts.v2] gcd / lcm and bool  | 
Issaquah  | 
Complete  | 
||
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  | 
||
nullopt_t insufficiently constrained  | 
Issaquah  | 
Complete  | 
||
  | 
Issaquah  | 
Complete  | 
||
Issue with time_point non-member subtraction with an unsigned duration  | 
Issaquah  | 
Complete  | 
||
constexpr optional<T>::operator->  | 
Issaquah  | 
Complete  | 
||
Inconsistent string interface taking string_view  | 
Issaquah  | 
Complete  | 
||
any’s in_place constructors  | 
Issaquah  | 
Complete  | 
||
[fund.ts.v2] Implementability of LWG 2451  | 
Issaquah  | 
Complete  | 
||
Possibly redundant std::move in [alg.foreach]  | 
Issaquah  | 
Complete  | 
||
swappable traits for optionals  | 
Issaquah  | 
Complete  | 
||
swappable traits for variants  | 
Issaquah  | 
Complete  | 
||
[fund.ts.v2] LWG 2451 conversion constructor constraint  | 
Issaquah  | 
Nothing To Do  | 
||
“Throws:” clauses of async and packaged_task are unimplementable  | 
Issaquah  | 
Nothing To Do  | 
||
[string.view.io] uses non-existent basic_string_view::to_string function  | 
Issaquah  | 
Complete  | 
||
C++ WP optional<T> should ‘forward’ T’s implicit conversions  | 
Issaquah  | 
Complete  | 
||
std::string{}.assign(“ABCDE”, 0, 1) is ambiguous  | 
Issaquah  | 
Complete  | 
||
gcd / lcm and bool for the WP  | 
Issaquah  | 
Complete  | 
||
non-const basic_string::data should not invalidate iterators  | 
Issaquah  | 
Complete  | 
||
Did LWG 1123 go too far?  | 
Issaquah  | 
Complete  | 
||
not_fn call_wrapper can form invalid types  | 
Issaquah  | 
Complete  | 
||
Redundant const in the return type of any_cast(const any&)  | 
Issaquah  | 
Complete  | 
||
Broken Effects of some basic_string::compare functions in terms of basic_string_view  | 
Issaquah  | 
Complete  | 
||
Making std::ignore constexpr  | 
Issaquah  | 
Complete  | 
||
basic_string_view::copy should use char_traits::copy  | 
Issaquah  | 
Complete  | 
||
basic_string_view is missing constexpr  | 
Issaquah  | 
Complete  | 
||
Missing requirement for Allocator::pointer  | 
Kona  | 
Complete  | 
||
Provide filesystem::path overloads for File-based streams  | 
Kona  | 
Complete  | 
||
any_cast and move semantics  | 
Kona  | 
Complete  | 
||
Redundant const in the return type of any_cast(const any&)  | 
Kona  | 
Complete  | 
||
Contradictory requirements for std::function and std::reference_wrapper  | 
Kona  | 
Complete  | 
||
scoped_allocator_adaptor constructors must be constrained  | 
Kona  | 
Complete  | 
||
Resolution to LWG 2484 is missing “otherwise, no effects” and is hard to parse  | 
Kona  | 
Complete  | 
||
quoted should work with basic_string_view  | 
Kona  | 
Complete  | 
||
Annex C should mention shared_ptr changes for array support  | 
Kona  | 
Complete  | 
||
§[file_status.cons] doesn’t match class definition  | 
Kona  | 
Complete  | 
||
basic_string range mutators unintentionally require a default constructible allocator  | 
Kona  | 
Complete  | 
||
Equivalence of contained objects  | 
Kona  | 
Complete  | 
||
Missing specification of istreambuf_iterator::operator->  | 
Kona  | 
Complete  | 
||
Missing requirements for allocator pointers  | 
Kona  | 
Nothing To Do  | 
||
§[global.functions] provides incorrect example of ADL use  | 
Kona  | 
Complete  | 
||
tuple should be a literal type  | 
Kona  | 
Complete  | 
||
Default-constructibility of unique_ptr  | 
Kona  | 
Complete  | 
||
shared_ptr constructor requirements for a deleter  | 
Kona  | 
Complete  | 
||
Unconditional constexpr default constructor for istream_iterator  | 
Kona  | 
Complete  | 
||
Base class of bad_optional_access  | 
Kona  | 
Complete  | 
||
std::invoke should use   | 
Kona  | 
Complete  | 
||
Range access is available with <string_view>  | 
Kona  | 
Complete  | 
||
list::sort should say that the order of elements is unspecified if an exception is thrown  | 
Kona  | 
Complete  | 
||
string_view iterators use old wording  | 
Kona  | 
Complete  | 
||
Resolution LWG 2223 is missing wording about end iterators  | 
Kona  | 
Complete  | 
||
LWG 2536 seems to misspecify <tgmath.h>  | 
Kona  | 
Complete  | 
||
gcd and lcm should support a wider range of input values  | 
Kona  | 
Complete  | 
||
is_literal_type specification needs a little cleanup  | 
Kona  | 
Complete  | 
||
in_place_t check for optional::optional(U&&) should decay U  | 
Kona  | 
Complete  | 
||
std::function move constructor does unnecessary work  | 
Kona  | 
Complete  | 
||
Possible inconsistency in specification of erase in [vector.modifiers]  | 
Kona  | 
Complete  | 
||
std::throw_with_nested(“string_literal”)  | 
Kona  | 
Complete  | 
||
{variant,optional,any}::emplace should return the constructed value  | 
Kona  | 
Complete  | 
||
basic_string should require that charT match traits::char_type  | 
Kona  | 
Complete  | 
||
Incorrect derived classes constraints  | 
Kona  | 
Nothing To Do  | 
||
Missing specification of bad_any_cast::what()  | 
Kona  | 
Complete  | 
||
Add definition for direct-non-list-initialization  | 
Kona  | 
Complete  | 
||
Add noexcept to several shared_ptr related functions  | 
Kona  | 
Complete  | 
||
Constructor   | 
Kona  | 
Complete  | 
13.0  | 
|
shared_ptr::shared_ptr(Y*, D, […]) constructors should be constrained  | 
Kona  | 
Complete  | 
||
  | 
Kona  | 
Complete  | 
14.0  | 
|
Missing DefaultConstructible requirement for istream_iterator default constructor  | 
Kona  | 
Complete  | 
||
The definition of ‘object state’ applies only to class types  | 
Kona  | 
Complete  | 
||
The copy and move constructors of optional are not constexpr  | 
Kona  | 
Complete  | 
||
The form of initialization for the emplace-constructors is not specified  | 
Kona  | 
Complete  | 
||
Make variant move-assignment more exception safe  | 
Kona  | 
Complete  | 
||
is_constructible_v<unique_ptr<P, D>, P, D const &> should be false when D is not copy constructible  | 
Kona  | 
Complete  | 
||
The less-than operator for shared pointers could do more  | 
Kona  | 
Complete  | 
||
An is_aggregate type trait is needed  | 
Kona  | 
Complete  | 
||
packaged_task and type-erased allocators  | 
Kona  | 
Complete  | 
||
optional<const T> doesn’t compare with T  | 
Kona  | 
Complete  | 
||
Variants cannot properly support allocators  | 
Toronto  | 
Complete  | 
||
  | 
Toronto  | 
Resolved by P0682R1  | 
||
  | 
Toronto  | 
Complete  |