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 |
In Progress |
||
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 |
|||
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 |
Partial |
||
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 |
||
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 |
In Progress 1 |
7.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 |
|||
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 |
|||
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 |
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 |
Broken in 3.6; See r261653. |
||
|
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 |
|||
Constrain rvalue stream operators |
Issaquah |
|||
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 |
|||
conjunction and disjunction requirements are too strict |
Issaquah |
Complete |
||
[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 |
|||
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 |
|||
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 |
|||
[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 |
|||
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 |
|||
shared_ptr::shared_ptr(Y*, D, […]) constructors should be constrained |
Kona |
|||
|
Kona |
|||
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 |
Last Updated: 17-Nov-2020