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.

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 #

Paper Name

Meeting

Status

First released version

Notes

N3911

TransformationTrait Alias void_t.

2014-11 (Urbana)

Complete

3.6

N4089

Safe conversions in unique_ptr<T[]>.

2014-11 (Urbana)

Complete

5

N4169

A proposal to add invoke function template

2014-11 (Urbana)

Complete

3.7

N4190

Removing auto_ptr, random_shuffle(), And Old <functional> Stuff.

2014-11 (Urbana)

Complete

15

N4258

Cleaning-up noexcept in the Library.

2014-11 (Urbana)

In Progress

3.7

N4259

Wording for std::uncaught_exceptions

2014-11 (Urbana)

Complete

3.7

std::uncaught_exception is deprecated since LLVM 20

N4277

TriviallyCopyable reference_wrapper.

2014-11 (Urbana)

Complete

3.2

N4279

Improved insertion interface for unique-key maps.

2014-11 (Urbana)

Complete

3.7

N4280

Non-member size() and more

2014-11 (Urbana)

Complete

3.6

N4284

Contiguous Iterators.

2014-11 (Urbana)

Complete

3.6

N4285

Cleanup for exception-specification and throw-expression.

2014-11 (Urbana)

Complete

4

N4387

improving pair and tuple

2015-05 (Lenexa)

Complete

4

N4389

bool_constant

2015-05 (Lenexa)

Complete

3.7

N4508

shared_mutex for C++17

2015-05 (Lenexa)

Complete

3.7

N4366

LWG 2228 missing SFINAE rule

2015-05 (Lenexa)

Complete

3.1

N4510

Minimal incomplete type support for standard containers, revision 4

2015-05 (Lenexa)

Complete

3.6

P0004R1

Remove Deprecated iostreams aliases.

2015-10 (Kona)

Complete

3.8

P0006R0

Adopt Type Traits Variable Templates for C++17.

2015-10 (Kona)

Complete

3.8

P0092R1

Polishing <chrono>

2015-10 (Kona)

Complete

3.8

P0007R1

Constant View: A proposal for a std::as_const helper function template.

2015-10 (Kona)

Complete

3.8

P0156R0

Variadic lock_guard(rev 3).

2015-10 (Kona)

Nothing To Do

Pulled at the 2017-01 meeting in Kona

P0074R0

Making std::owner_less more flexible

2015-10 (Kona)

Complete

3.8

P0013R1

Logical type traits rev 2

2015-10 (Kona)

Complete

3.8

P0024R2

The Parallelism TS Should be Standardized

2016-02 (Jacksonville)

Partial

P0226R1

Mathematical Special Functions for C++17

2016-02 (Jacksonville)

In Progress

Progress is tracked here

P0220R1

Adopt Library Fundamentals V1 TS Components for C++17

2016-02 (Jacksonville)

Complete

16

P0218R1

Adopt the File System TS for C++17

2016-02 (Jacksonville)

Complete

7

P0033R1

Re-enabling shared_from_this

2016-02 (Jacksonville)

Complete

3.9

P0005R4

Adopt not_fn from Library Fundamentals 2 for C++17

2016-02 (Jacksonville)

Complete

3.9

P0152R1

constexpr atomic::is_always_lock_free

2016-02 (Jacksonville)

Complete

3.9

P0185R1

Adding [nothrow-]swappable traits

2016-02 (Jacksonville)

Complete

3.9

P0253R1

Fixing a design mistake in the searchers interface

2016-02 (Jacksonville)

Complete

3.9

P0025R0

An algorithm to “clamp” a value between a pair of boundary values

2016-02 (Jacksonville)

Complete

3.9

P0154R1

constexpr std::hardware_{constructive,destructive}_interference_size

2016-02 (Jacksonville)

Complete

19

The required macros are only implemented as of LLVM 19.

P0030R1

Proposal to Introduce a 3-Argument Overload to std::hypot

2016-02 (Jacksonville)

Complete

3.9

P0031R0

A Proposal to Add Constexpr Modifiers to reverse_iterator, move_iterator, array and Range Access

2016-02 (Jacksonville)

Complete

4

P0272R1

Give std::string a non-const .data() member function

2016-02 (Jacksonville)

Complete

3.9

P0077R2

is_callable, the missing INVOKE related trait

2016-02 (Jacksonville)

Complete

3.9

P0032R3

Homogeneous interface for variant, any and optional

2016-06 (Oulu)

Complete

4

P0040R3

Extending memory management tools

2016-06 (Oulu)

Complete

4

P0063R3

C++17 should refer to C11 instead of C99

2016-06 (Oulu)

Complete

7

P0067R3

Elementary string conversions

2016-06 (Oulu)

Nothing To Do

n/a

Resolved by P0067R5

P0083R3

Splicing Maps and Sets

2016-06 (Oulu)

Complete

8

P0084R2

Emplace Return Type

2016-06 (Oulu)

Complete

4

P0088R3

Variant: a type-safe union for C++17

2016-06 (Oulu)

Complete

4

P0137R1

Core Issue 1776: Replacement of class objects containing reference members

2016-06 (Oulu)

Complete

6

P0163R0

shared_ptr::weak_type

2016-06 (Oulu)

Complete

3.9

P0174R2

Deprecating Vestigial Library Parts in C++17

2016-06 (Oulu)

Complete

15

P0175R1

Synopses for the C library

2016-06 (Oulu)

Nothing To Do

n/a

P0180R2

Reserve a New Library Namespace for Future Standardization

2016-06 (Oulu)

Nothing To Do

n/a

P0181R1

Ordered by Default

2016-06 (Oulu)

Nothing To Do

n/a

Pulled at the 2017-01 meeting in Kona

P0209R2

make_from_tuple: apply for construction

2016-06 (Oulu)

Complete

3.9

P0219R1

Relative Paths for Filesystem

2016-06 (Oulu)

Complete

7

P0254R2

Integrating std::string_view and std::string

2016-06 (Oulu)

Complete

4

P0258R2

has_unique_object_representations

2016-06 (Oulu)

Complete

6

P0295R0

Adopt Selected Library Fundamentals V2 Components for C++17

2016-06 (Oulu)

Complete

4

P0302R1

Removing Allocator Support in std::function

2016-06 (Oulu)

Complete

4

P0307R2

Making Optional Greater Equal Again

2016-06 (Oulu)

Complete

4

P0336R1

Better Names for Parallel Execution Policies in C++17

2016-06 (Oulu)

Complete

17

P0337R0

Delete operator= for polymorphic_allocator

2016-06 (Oulu)

Complete

3.9

P0346R1

A <random> Nomenclature Tweak

2016-06 (Oulu)

Complete

3.9

P0358R1

Fixes for not_fn

2016-06 (Oulu)

Complete

3.9

P0371R1

Temporarily discourage memory_order_consume

2016-06 (Oulu)

Nothing To Do

n/a

P0392R0

Adapting string_view by filesystem paths

2016-06 (Oulu)

Complete

4

P0393R3

Making Variant Greater Equal

2016-06 (Oulu)

Complete

4

P0394R4

Hotel Parallelifornia: terminate() for Parallel Algorithms Exception Handling

2016-06 (Oulu)

Complete

17

P0003R5

Removing Deprecated Exception Specifications from C++17

2016-11 (Issaquah)

Complete

5

P0067R5

Elementary string conversions, revision 5

2016-11 (Issaquah)

Partial

For integer types, std::(to|from)_chars has been available since v7; for float and double, std::to_chars since v14 and std::from_chars since v20. Support is complete except for long double.

P0403R1

Literal suffixes for basic_string_view

2016-11 (Issaquah)

Complete

4

P0414R2

Merging shared_ptr changes from Library Fundamentals to C++17

2016-11 (Issaquah)

Complete

11

P0418R2

Fail or succeed: there is no atomic lattice

2016-11 (Issaquah)

P0426R1

Constexpr for std::char_traits

2016-11 (Issaquah)

Complete

4

P0435R1

Resolving LWG Issues re common_type

2016-11 (Issaquah)

Complete

4

P0502R0

Throwing out of a parallel algorithm terminates - but how?

2016-11 (Issaquah)

P0503R0

Correcting library usage of “literal type”

2016-11 (Issaquah)

Complete

4

P0504R0

Revisiting in-place tag types for any/optional/variant

2016-11 (Issaquah)

Complete

4

P0505R0

Wording for GB 50 - constexpr for chrono

2016-11 (Issaquah)

Complete

4

P0508R0

Wording for GB 58 - structured bindings for node_handles

2016-11 (Issaquah)

Complete

7

P0509R1

Updating “Restrictions on exception handling”

2016-11 (Issaquah)

Nothing To Do

n/a

P0510R0

Disallowing references, incomplete types, arrays, and empty variants

2016-11 (Issaquah)

Complete

4

P0513R0

Poisoning the Hash

2016-11 (Issaquah)

Complete

5

P0516R0

Clarify That shared_future’s Copy Operations have Wide Contracts

2016-11 (Issaquah)

Complete

4

P0517R0

Make future_error Constructible

2016-11 (Issaquah)

Complete

4

P0521R0

Proposed Resolution for CA 14 (shared_ptr use_count/unique)

2016-11 (Issaquah)

Complete

18

P0156R2

Variadic Lock guard(rev 5)

2017-02 (Kona)

Complete

5

P0270R3

Removing C dependencies from signal handler wording

2017-02 (Kona)

Nothing To Do

P0298R3

A byte type definition

2017-02 (Kona)

Complete

5

P0317R1

Directory Entry Caching for Filesystem

2017-02 (Kona)

Complete

7

P0430R2

File system library on non-POSIX-like operating systems

2017-02 (Kona)

Complete

7

P0433R2

Toward a resolution of US7 and US14: Integrating template deduction for class templates into the standard library

2017-02 (Kona)

Complete

14

P0452R1

Unifying <numeric> Parallel Algorithms

2017-02 (Kona)

Partial

The changes to std::transform_inclusive_scan and std::transform_exclusive_scan have not yet been implemented.

P0467R2

Iterator Concerns for Parallel Algorithms

2017-02 (Kona)

Partial

P0492R2

Proposed Resolution of C++17 National Body Comments for Filesystems

2017-02 (Kona)

Complete

7

P0518R1

Allowing copies as arguments to function objects given to parallel algorithms in response to CH11

2017-02 (Kona)

Nothing To Do

P0523R1

Wording for CH 10: Complexity of parallel algorithms

2017-02 (Kona)

Nothing To Do

P0548R1

common_type and duration

2017-02 (Kona)

Complete

5

P0558R1

Resolving atomic<T> named base class inconsistencies

2017-02 (Kona)

Complete

P0574R1

Algorithm Complexity Constraints and Parallel Overloads

2017-02 (Kona)

Nothing To Do

P0599R1

noexcept for hash functions

2017-02 (Kona)

Complete

5

P0604R0

Resolving GB 55, US 84, US 85, US 86

2017-02 (Kona)

Complete

P0607R0

Inline Variables for the Standard Library

2017-02 (Kona)

In Progress

6

The parts of P0607 that are not done are the <regex> bits

P0618R0

Deprecating <codecvt>

2017-02 (Kona)

Complete

15

P0623R0

Final C++17 Parallel Algorithms Fixes

2017-02 (Kona)

Nothing To Do

P0682R1

Repairing elementary string conversions

2017-07 (Toronto)

P0739R0

Some improvements to class template argument deduction integration into the standard library

2017-07 (Toronto)

Complete

5

Library Working Group Issues Status

Issue #

Issue Name

Meeting

Status

First released version

Notes

LWG2016

Allocators must be no-throw swappable

2014-11 (Urbana)

Complete

LWG2118

unique_ptr for array does not support cv qualification conversion of actual argument

2014-11 (Urbana)

Complete

LWG2170

Aggregates cannot be DefaultConstructible

2014-11 (Urbana)

Complete

LWG2340

Replacement allocation functions declared as inline

2014-11 (Urbana)

Complete

LWG2354

Unnecessary copying when inserting into maps with braced-init syntax

2014-11 (Urbana)

Complete

LWG2377

std::align requirements overly strict

2014-11 (Urbana)

Complete

LWG2396

underlying_type doesn’t say what to do for an incomplete enumeration type

2014-11 (Urbana)

Complete

LWG2399

shared_ptr‘s constructor from unique_ptr should be constrained

2014-11 (Urbana)

Complete

LWG2400

shared_ptr‘s get_deleter() should use addressof()

2014-11 (Urbana)

Complete

LWG2401

std::function needs more noexcept

2014-11 (Urbana)

Complete

LWG2404

mismatch()‘s complexity needs to be updated

2014-11 (Urbana)

Complete

LWG2408

SFINAE-friendly common_type / iterator_traits is missing in C++14

2014-11 (Urbana)

Complete

LWG2106

move_iterator wrapping iterators returning prvalues

2014-11 (Urbana)

Complete

LWG2129

User specializations of std::initializer_list

2014-11 (Urbana)

Complete

LWG2212

tuple_size for const pair request <tuple> header

2014-11 (Urbana)

Complete

LWG2217

operator==(sub_match, string) slices on embedded ‘0’s

2014-11 (Urbana)

Complete

LWG2230

“see below” for initializer_list constructors of unordered containers

2014-11 (Urbana)

Complete

LWG2233

bad_function_call::what() unhelpful

2014-11 (Urbana)

Complete

LWG2266

vector and deque have incorrect insert requirements

2014-11 (Urbana)

Complete

LWG2325

minmax_element()‘s behavior differing from max_element()‘s should be noted

2014-11 (Urbana)

Complete

LWG2361

Apply 2299 resolution throughout library

2014-11 (Urbana)

Complete

LWG2365

Missing noexcept in shared_ptr::shared_ptr(nullptr_t)

2014-11 (Urbana)

Complete

LWG2376

bad_weak_ptr::what() overspecified

2014-11 (Urbana)

Complete

LWG2387

More nested types that must be accessible and unambiguous

2014-11 (Urbana)

Complete

LWG2059

C++0x ambiguity problem with map::erase

2015-05 (Lenexa)

Complete

LWG2063

Contradictory requirements for string move assignment

2015-05 (Lenexa)

Complete

LWG2076

Bad CopyConstructible requirement in set constructors

2015-05 (Lenexa)

Complete

LWG2160

Unintended destruction ordering-specification of resize

2015-05 (Lenexa)

Complete

LWG2168

Inconsistent specification of uniform_real_distribution constructor

2015-05 (Lenexa)

Complete

LWG2239

min/max/minmax requirements

2015-05 (Lenexa)

Complete

LWG2364

deque and vector pop_back don’t specify iterator invalidation requirements

2015-05 (Lenexa)

Complete

LWG2369

constexpr max(initializer_list) vs max_element

2015-05 (Lenexa)

Complete

LWG2378

Behaviour of standard exception types

2015-05 (Lenexa)

Complete

LWG2403

stof() should call strtof() and wcstof()

2015-05 (Lenexa)

Complete

LWG2406

negative_binomial_distribution should reject p == 1

2015-05 (Lenexa)

Complete

LWG2407

packaged_task(allocator_arg_t, const Allocator&, F&&) should neither be constrained nor explicit

2015-05 (Lenexa)

Complete

LWG2411

shared_ptr is only contextually convertible to bool

2015-05 (Lenexa)

Complete

LWG2415

Inconsistency between unique_ptr and shared_ptr

2015-05 (Lenexa)

Complete

LWG2420

function<void(ArgTypes…)> does not discard the return value of the target object

2015-05 (Lenexa)

Complete

LWG2425

operator delete(void*, size_t) doesn’t invalidate pointers sufficiently

2015-05 (Lenexa)

Complete

LWG2427

Container adaptors as sequence containers, redux

2015-05 (Lenexa)

Complete

LWG2428

“External declaration” used without being defined

2015-05 (Lenexa)

Complete

LWG2433

uninitialized_copy()/etc. should tolerate overloaded operator&

2015-05 (Lenexa)

Complete

LWG2434

shared_ptr::use_count() is efficient

2015-05 (Lenexa)

Complete

LWG2437

iterator_traits::reference can and can’t be void

2015-05 (Lenexa)

Complete

LWG2438

std::iterator inheritance shouldn’t be mandated

2015-05 (Lenexa)

Complete

LWG2439

unique_copy() sometimes can’t fall back to reading its output

2015-05 (Lenexa)

Complete

LWG2440

seed_seq::size() should be noexcept

2015-05 (Lenexa)

Complete

LWG2442

call_once() shouldn’t DECAY_COPY()

2015-05 (Lenexa)

Complete

LWG2448

Non-normative Container destructor specification

2015-05 (Lenexa)

Complete

LWG2454

Add raw_storage_iterator::base() member

2015-05 (Lenexa)

Complete

LWG2455

Allocator default construction should be allowed to throw

2015-05 (Lenexa)

Complete

LWG2458

N3778 and new library deallocation signatures

2015-05 (Lenexa)

Complete

LWG2459

std::polar should require a non-negative rho

2015-05 (Lenexa)

Complete

LWG2464

try_emplace and insert_or_assign misspecified

2015-05 (Lenexa)

Complete

LWG2467

is_always_equal has slightly inconsistent default

2015-05 (Lenexa)

Complete

LWG2470

Allocator’s destroy function should be allowed to fail to instantiate

2015-05 (Lenexa)

Complete

LWG2482

[c.strings] Table 73 mentions nonexistent functions

2015-05 (Lenexa)

Complete

LWG2488

Placeholders should be allowed and encouraged to be constexpr

2015-05 (Lenexa)

Complete

LWG1169

num_get not fully compatible with strto*

2015-10 (Kona)

Complete

LWG2072

Unclear wording about capacity of temporary buffers

2015-10 (Kona)

Complete

LWG2101

Some transformation types can produce impossible types

2015-10 (Kona)

Complete

LWG2111

Which unexpected&#47;``terminate`` handler is called from the exception handling runtime?

2015-10 (Kona)

Complete

LWG2119

Missing hash specializations for extended integer types

2015-10 (Kona)

Complete

LWG2127

Move-construction with raw_storage_iterator

2015-10 (Kona)

Complete

LWG2133

Attitude to overloaded comma for iterators

2015-10 (Kona)

Complete

LWG2156

Unordered containers’ reserve(n) reserves for n-1 elements

2015-10 (Kona)

Complete

LWG2218

Unclear how containers use allocator_traits::construct()

2015-10 (Kona)

Complete

LWG2219

*INVOKE*-ing a pointer to member with a reference_wrapper as the object expression

2015-10 (Kona)

Complete

LWG2224

Ambiguous status of access to non-live objects

2015-10 (Kona)

Complete

LWG2234

assert() should allow usage in constant expressions

2015-10 (Kona)

Complete

LWG2244

Issue on basic_istream::seekg

2015-10 (Kona)

Complete

LWG2250

Follow-up On Library Issue 2207

2015-10 (Kona)

Complete

LWG2259

Issues in 17.6.5.5 rules for member functions

2015-10 (Kona)

Complete

LWG2273

regex_match ambiguity

2015-10 (Kona)

Complete

LWG2336

is_trivially_constructible/is_trivially_assignable traits are always false

2015-10 (Kona)

Complete

LWG2353

std::next is over-constrained

2015-10 (Kona)

Complete

LWG2367

pair and tuple are not correctly implemented for is_constructible with no args

2015-10 (Kona)

Complete

LWG2380

May <cstdlib> provide long ::abs(long) and long long ::abs(long long)?

2015-10 (Kona)

Complete

LWG2384

Allocator’s deallocate function needs better specification

2015-10 (Kona)

Complete

LWG2385

function::assign allocator argument doesn’t make sense

2015-10 (Kona)

Complete

LWG2435

reference_wrapper::operator()‘s Remark should be deleted

2015-10 (Kona)

Complete

LWG2447

Allocators and volatile-qualified value types

2015-10 (Kona)

Complete

LWG2462

std::ios_base::failure is overspecified

2015-10 (Kona)

Complete

LWG2466

allocator_traits::max_size() default behavior is incorrect

2015-10 (Kona)

Complete

LWG2469

Wrong specification of Requires clause of operator[] for map and unordered_map

2015-10 (Kona)

Complete

LWG2473

basic_filebuf‘s relation to C FILE semantics

2015-10 (Kona)

Complete

LWG2476

scoped_allocator_adaptor is not assignable

2015-10 (Kona)

Complete

LWG2477

Inconsistency of wordings in std::vector::erase() and std::deque::erase()

2015-10 (Kona)

Complete

LWG2483

throw_with_nested() should use is_final

2015-10 (Kona)

Complete

LWG2484

rethrow_if_nested() is doubly unimplementable

2015-10 (Kona)

Complete

LWG2485

get() should be overloaded for const tuple&&

2015-10 (Kona)

Complete

LWG2486

mem_fn() should be required to use perfect forwarding

2015-10 (Kona)

Complete

LWG2487

bind() should be const-overloaded, not cv-overloaded

2015-10 (Kona)

Complete

LWG2489

mem_fn() should be noexcept

2015-10 (Kona)

Complete

LWG2492

Clarify requirements for comp

2015-10 (Kona)

Complete

LWG2495

There is no such thing as an Exception Safety element

2015-10 (Kona)

Complete

LWG2192

Validity and return type of std::abs(0u) is unclear

2016-02 (Jacksonville)

Complete

LWG2276

Missing requirement on std::promise::set_exception

2016-02 (Jacksonville)

Complete

LWG2296

std::addressof should be constexpr

2016-02 (Jacksonville)

Complete

LWG2450

(greater|less|greater_equal|less_equal)<void> do not yield a total order for pointers

2016-02 (Jacksonville)

Complete

LWG2520

N4089 broke initializing unique_ptr<T[]> from a nullptr

2016-02 (Jacksonville)

Complete

LWG2522

[fund.ts.v2] Contradiction in set_default_resource specification

2016-02 (Jacksonville)

Complete

LWG2523

std::promise synopsis shows two set_value_at_thread_exit()‘s for no apparent reason

2016-02 (Jacksonville)

Complete

LWG2537

Constructors for priority_queue taking allocators should call make_heap

2016-02 (Jacksonville)

Complete

LWG2539

[fund.ts.v2] invocation_trait definition definition doesn’t work for surrogate call functions

2016-02 (Jacksonville)

LWG2545

Simplify wording for bind without explicitly specified return type

2016-02 (Jacksonville)

Complete

LWG2557

Logical operator traits are broken in the zero-argument case

2016-02 (Jacksonville)

Complete

LWG2558

[fund.ts.v2] Logical operator traits are broken in the zero-argument case

2016-02 (Jacksonville)

Complete

LWG2559

Error in LWG 2234’s resolution

2016-02 (Jacksonville)

Complete

LWG2560

is_constructible underspecified when applied to a function type

2016-02 (Jacksonville)

Complete

LWG2565

std::function‘s move constructor should guarantee nothrow for reference_wrappers and function pointers

2016-02 (Jacksonville)

Complete

LWG2566

Requirements on the first template parameter of container adaptors

2016-02 (Jacksonville)

Complete

LWG2571

§[map.modifiers]/2 imposes nonsensical requirement on insert(InputIterator, InputIterator)

2016-02 (Jacksonville)

Complete

LWG2572

The remarks for shared_ptr::operator* should apply to cv-qualified void as well

2016-02 (Jacksonville)

Complete

LWG2574

[fund.ts.v2] std::experimental::function::operator=(F&&) should be constrained

2016-02 (Jacksonville)

Complete

LWG2575

[fund.ts.v2] experimental::function::assign should be removed

2016-02 (Jacksonville)

LWG2576

istream_iterator and ostream_iterator should use std::addressof

2016-02 (Jacksonville)

Complete

LWG2577

{shared,unique}_lock should use std::addressof

2016-02 (Jacksonville)

Complete

LWG2579

Inconsistency wrt Allocators in basic_string assignment vs. basic_string::assign

2016-02 (Jacksonville)

Complete

LWG2581

Specialization of <type_traits> variable templates should be prohibited

2016-02 (Jacksonville)

Complete

LWG2582

§[res.on.functions]/2’s prohibition against incomplete types shouldn’t apply to type traits

2016-02 (Jacksonville)

Complete

LWG2583

There is no way to supply an allocator for basic_string(str, pos)

2016-02 (Jacksonville)

Complete

LWG2585

forward_list::resize(size_type, const value_type&) effects incorrect

2016-02 (Jacksonville)

Complete

LWG2586

Wrong value category used in scoped_allocator_adaptor::construct()

2016-02 (Jacksonville)

Complete

LWG2590

Aggregate initialization for std::array

2016-02 (Jacksonville)

Complete

LWG2181

Exceptions from seed sequence operations

2016-06 (Oulu)

Complete

LWG2309

mutex::lock() should not throw device_or_resource_busy

2016-06 (Oulu)

Complete

LWG2310

Public exposition only member in std::array

2016-06 (Oulu)

Complete

LWG2312

tuple’s constructor constraints need to be phrased more precisely

2016-06 (Oulu)

Complete

LWG2328

Rvalue stream extraction should use perfect forwarding

2016-06 (Oulu)

Complete

LWG2393

std::function’s Callable definition is broken

2016-06 (Oulu)

Complete

LWG2422

std::numeric_limits<T>::is_modulo description: “most machines” errata

2016-06 (Oulu)

Complete

LWG2426

Issue about compare_exchange

2016-06 (Oulu)

Complete

LWG2436

Comparators for associative containers should always be CopyConstructible

2016-06 (Oulu)

Complete

LWG2441

Exact-width atomic typedefs should be provided

2016-06 (Oulu)

Complete

LWG2451

[fund.ts.v2] optional should ‘forward’ T’s implicit conversions

2016-06 (Oulu)

Nothing To Do

LWG2509

[fund.ts.v2] any_cast doesn’t work with rvalue reference targets and cannot move with a value target

2016-06 (Oulu)

Complete

LWG2516

[fund.ts.v2] Public “exposition only” members in observer_ptr

2016-06 (Oulu)

Complete

18

LWG2542

Missing const requirements for associative containers

2016-06 (Oulu)

LWG2549

Tuple EXPLICIT constructor templates that take tuple parameters end up taking references to temporaries and will create dangling references

2016-06 (Oulu)

Complete

LWG2550

Wording of unordered container’s clear() method complexity

2016-06 (Oulu)

Complete

LWG2551

[fund.ts.v2] “Exception safety” cleanup in library fundamentals required

2016-06 (Oulu)

Complete

LWG2555

[fund.ts.v2] No handling for over-aligned types in optional

2016-06 (Oulu)

Complete

LWG2573

[fund.ts.v2] std::hash<std::experimental::shared_ptr> does not work for arrays

2016-06 (Oulu)

LWG2596

vector::data() should use addressof

2016-06 (Oulu)

Complete

LWG2667

path::root_directory() description is confusing

2016-06 (Oulu)

Complete

LWG2669

recursive_directory_iterator effects refers to non-existent functions

2016-06 (Oulu)

Complete

LWG2670

system_complete refers to undefined variable ‘base’

2016-06 (Oulu)

Complete

LWG2671

Errors in Copy

2016-06 (Oulu)

Complete

LWG2673

status() effects cannot be implemented as specified

2016-06 (Oulu)

Complete

LWG2674

Bidirectional iterator requirement on path::iterator is very expensive

2016-06 (Oulu)

Complete

LWG2683

filesystem::copy() says “no effects”

2016-06 (Oulu)

Complete

LWG2684

priority_queue lacking comparator typedef

2016-06 (Oulu)

Complete

LWG2685

shared_ptr deleters must not throw on move construction

2016-06 (Oulu)

Complete

LWG2687

{inclusive,exclusive}_scan misspecified

2016-06 (Oulu)

LWG2688

clamp misses preconditions and has extraneous condition on result

2016-06 (Oulu)

Complete

LWG2689

Parallel versions of std::copy and std::move shouldn’t be in order

2016-06 (Oulu)

Nothing To Do

LWG2698

Effect of assign() on iterators/pointers/references

2016-06 (Oulu)

Complete

LWG2704

recursive_directory_iterator’s members should require ‘*this is dereferenceable’

2016-06 (Oulu)

Complete

LWG2706

Error reporting for recursive_directory_iterator::pop() is under-specified

2016-06 (Oulu)

Complete

LWG2707

path construction and assignment should have “string_type&&” overloads

2016-06 (Oulu)

Complete

LWG2709

offsetof is unnecessarily imprecise

2016-06 (Oulu)

LWG2710

“Effects: Equivalent to …” doesn’t count “Synchronization:” as determined semantics

2016-06 (Oulu)

Complete

LWG2711

path is convertible from approximately everything under the sun

2016-06 (Oulu)

Complete

LWG2716

Specification of shuffle and sample disallows lvalue URNGs

2016-06 (Oulu)

Complete

LWG2718

Parallelism bug in [algorithms.parallel.exec] p2

2016-06 (Oulu)

LWG2719

permissions function should not be noexcept due to narrow contract

2016-06 (Oulu)

Complete

LWG2720

permissions function incorrectly specified for symlinks

2016-06 (Oulu)

Complete

LWG2721

remove_all has incorrect post conditions

2016-06 (Oulu)

Complete

LWG2723

Do directory_iterator and recursive_directory_iterator become the end iterator upon error?

2016-06 (Oulu)

Complete

LWG2724

The protected virtual member functions of memory_resource should be private

2016-06 (Oulu)

Complete

16

LWG2725

filesystem::exists(const path&, error_code&) error reporting

2016-06 (Oulu)

Complete

LWG2726

[recursive_]directory_iterator::increment(error_code&) is underspecified

2016-06 (Oulu)

Complete

LWG2727

Parallel algorithms with constexpr specifier

2016-06 (Oulu)

LWG2728

status(p).permissions() and symlink_status(p).permissions() are not specified

2016-06 (Oulu)

Complete

LWG2062

Effect contradictions w/o no-throw guarantee of std::function swaps

2016-11 (Issaquah)

Complete

LWG2166

Heap property underspecified?

2016-11 (Issaquah)

LWG2221

No formatted output operator for nullptr

2016-11 (Issaquah)

Complete

LWG2223

shrink_to_fit effect on iterator validity

2016-11 (Issaquah)

Complete

LWG2261

Are containers required to use their ‘pointer’ type internally?

2016-11 (Issaquah)

LWG2394

locale::name specification unclear - what is implementation-defined?

2016-11 (Issaquah)

Complete

LWG2460

LWG issue 2408 and value categories

2016-11 (Issaquah)

Complete

LWG2468

Self-move-assignment of library types

2016-11 (Issaquah)

LWG2475

Allow overwriting of std::basic_string terminator with charT() to allow cleaner interoperation with legacy APIs

2016-11 (Issaquah)

Complete

LWG2503

multiline option should be added to syntax_option_type

2016-11 (Issaquah)

Complete

LWG2510

Tag types should not be DefaultConstructible

2016-11 (Issaquah)

Complete

LWG2514

Type traits must not be final

2016-11 (Issaquah)

Complete

LWG2518

[fund.ts.v2] Non-member swap for propagate_const should call member swap

2016-11 (Issaquah)

Complete

LWG2519

Iterator operator-= has gratuitous undefined behaviour

2016-11 (Issaquah)

Complete

LWG2521

[fund.ts.v2] weak_ptr’s converting move constructor should be modified as well for array support

2016-11 (Issaquah)

LWG2525

[fund.ts.v2] get_memory_resource should be const and noexcept

2016-11 (Issaquah)

LWG2527

[fund.ts.v2] ALLOCATOR_OF for function::operator= has incorrect default

2016-11 (Issaquah)

LWG2531

future::get should explicitly state that the shared state is released

2016-11 (Issaquah)

Nothing To Do

LWG2534

Constrain rvalue stream operators

2016-11 (Issaquah)

Complete

LWG2536

What should <complex.h> do?

2016-11 (Issaquah)

Complete

LWG2540

unordered_multimap::insert hint iterator

2016-11 (Issaquah)

Complete

LWG2543

LWG 2148 (hash support for enum types) seems under-specified

2016-11 (Issaquah)

Complete

LWG2544

istreambuf_iterator(basic_streambuf<charT, traits>* s) effects unclear when s is 0

2016-11 (Issaquah)

Complete

LWG2556

Wide contract for future::share()

2016-11 (Issaquah)

Complete

LWG2562

Consistent total ordering of pointers by comparison functors

2016-11 (Issaquah)

LWG2567

Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits

2016-11 (Issaquah)

Complete

LWG2568

[fund.ts.v2] Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits

2016-11 (Issaquah)

Complete

15

LWG2569

conjunction and disjunction requirements are too strict

2016-11 (Issaquah)

Complete

15

LWG2570

[fund.ts.v2] conjunction and disjunction requirements are too strict

2016-11 (Issaquah)

LWG2578

Iterator requirements should reference iterator traits

2016-11 (Issaquah)

Complete

LWG2584

<regex> ECMAScript IdentityEscape is ambiguous

2016-11 (Issaquah)

LWG2587

“Convertible to bool” requirement in conjunction and disjunction

2016-11 (Issaquah)

Nothing To Do

Resolved by LWG2567

LWG2588

[fund.ts.v2] “Convertible to bool” requirement in conjunction and disjunction

2016-11 (Issaquah)

Nothing To Do

Resolved by LWG2568

LWG2589

match_results can’t satisfy the requirements of a container

2016-11 (Issaquah)

Complete

LWG2591

std::function’s member template target() should not lead to undefined behaviour

2016-11 (Issaquah)

Complete

LWG2598

addressof works on temporaries

2016-11 (Issaquah)

Complete

LWG2664

operator/ (and other append) semantics not useful if argument has root

2016-11 (Issaquah)

Complete

LWG2665

remove_filename() post condition is incorrect

2016-11 (Issaquah)

Complete

LWG2672

Should is_empty use error_code in its specification?

2016-11 (Issaquah)

Complete

LWG2678

std::filesystem enum classes overspecified

2016-11 (Issaquah)

Complete

LWG2679

Inconsistent Use of Effects and Equivalent To

2016-11 (Issaquah)

Complete

LWG2680

Add “Equivalent to” to filesystem

2016-11 (Issaquah)

Complete

LWG2681

filesystem::copy() cannot copy symlinks

2016-11 (Issaquah)

Complete

LWG2686

Why is std::hash specialized for error_code, but not error_condition?

2016-11 (Issaquah)

Complete

LWG2694

Application of LWG 436 accidentally deleted definition of “facet”

2016-11 (Issaquah)

Complete

LWG2696

Interaction between make_shared and enable_shared_from_this is underspecified

2016-11 (Issaquah)

Nothing To Do

LWG2699

Missing restriction in [numeric.requirements]

2016-11 (Issaquah)

Complete

LWG2712

copy_file(from, to, …) has a number of unspecified error conditions

2016-11 (Issaquah)

Complete

LWG2722

equivalent incorrectly specifies throws clause

2016-11 (Issaquah)

Complete

LWG2729

Missing SFINAE on std::pair::operator=

2016-11 (Issaquah)

Complete

LWG2732

Questionable specification of path::operator/= and path::append

2016-11 (Issaquah)

Complete

LWG2733

[fund.ts.v2] gcd / lcm and bool

2016-11 (Issaquah)

Complete

LWG2735

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

2016-11 (Issaquah)

Complete

LWG2736

nullopt_t insufficiently constrained

2016-11 (Issaquah)

Complete

LWG2738

is_constructible with void types

2016-11 (Issaquah)

Complete

LWG2739

Issue with time_point non-member subtraction with an unsigned duration

2016-11 (Issaquah)

Complete

LWG2740

constexpr optional<T>::operator->

2016-11 (Issaquah)

Complete

LWG2742

Inconsistent string interface taking string_view

2016-11 (Issaquah)

Complete

LWG2744

any’s in_place constructors

2016-11 (Issaquah)

Complete

LWG2745

[fund.ts.v2] Implementability of LWG 2451

2016-11 (Issaquah)

Complete

LWG2747

Possibly redundant std::move in [alg.foreach]

2016-11 (Issaquah)

Complete

LWG2748

swappable traits for optionals

2016-11 (Issaquah)

Complete

LWG2749

swappable traits for variants

2016-11 (Issaquah)

Complete

LWG2750

[fund.ts.v2] LWG 2451 conversion constructor constraint

2016-11 (Issaquah)

Nothing To Do

LWG2752

“Throws:” clauses of async and packaged_task are unimplementable

2016-11 (Issaquah)

Nothing To Do

LWG2755

[string.view.io] uses non-existent basic_string_view::to_string function

2016-11 (Issaquah)

Complete

LWG2756

C++ WP optional<T> should ‘forward’ T’s implicit conversions

2016-11 (Issaquah)

Complete

LWG2758

std::string{}.assign(“ABCDE”, 0, 1) is ambiguous

2016-11 (Issaquah)

Complete

LWG2759

gcd / lcm and bool for the WP

2016-11 (Issaquah)

Complete

LWG2760

non-const basic_string::data should not invalidate iterators

2016-11 (Issaquah)

Complete

LWG2765

Did LWG 1123 go too far?

2016-11 (Issaquah)

Complete

LWG2767

not_fn call_wrapper can form invalid types

2016-11 (Issaquah)

Complete

LWG2771

Broken Effects of some basic_string::compare functions in terms of basic_string_view

2016-11 (Issaquah)

Complete

LWG2773

Making std::ignore constexpr

2016-11 (Issaquah)

Complete

LWG2777

basic_string_view::copy should use char_traits::copy

2016-11 (Issaquah)

Complete

LWG2778

basic_string_view is missing constexpr

2016-11 (Issaquah)

Complete

LWG2260

Missing requirement for Allocator::pointer

2017-02 (Kona)

Complete

LWG2676

Provide filesystem::path overloads for File-based streams

2017-02 (Kona)

Complete

LWG2768

any_cast and move semantics

2017-02 (Kona)

Complete

LWG2769

Redundant const in the return type of any_cast(const any&)

2017-02 (Kona)

Complete

LWG2781

Contradictory requirements for std::function and std::reference_wrapper

2017-02 (Kona)

Complete

LWG2782

scoped_allocator_adaptor constructors must be constrained

2017-02 (Kona)

Complete

LWG2784

Resolution to LWG 2484 is missing “otherwise, no effects” and is hard to parse

2017-02 (Kona)

Complete

LWG2785

quoted should work with basic_string_view

2017-02 (Kona)

Complete

LWG2786

Annex C should mention shared_ptr changes for array support

2017-02 (Kona)

Complete

LWG2787

§[file_status.cons] doesn’t match class definition

2017-02 (Kona)

Complete

LWG2788

basic_string range mutators unintentionally require a default constructible allocator

2017-02 (Kona)

Complete

LWG2789

Equivalence of contained objects

2017-02 (Kona)

Complete

LWG2790

Missing specification of istreambuf_iterator::operator->

2017-02 (Kona)

Complete

LWG2794

Missing requirements for allocator pointers

2017-02 (Kona)

Nothing To Do

LWG2795

§[global.functions] provides incorrect example of ADL use

2017-02 (Kona)

Complete

LWG2796

tuple should be a literal type

2017-02 (Kona)

Complete

LWG2801

Default-constructibility of unique_ptr

2017-02 (Kona)

Complete

LWG2802

shared_ptr constructor requirements for a deleter

2017-02 (Kona)

Complete

LWG2804

Unconditional constexpr default constructor for istream_iterator

2017-02 (Kona)

Complete

LWG2806

Base class of bad_optional_access

2017-02 (Kona)

Complete

LWG2807

std::invoke should use std::is_nothrow_callable

2017-02 (Kona)

Complete

LWG2812

Range access is available with <string_view>

2017-02 (Kona)

Complete

LWG2824

list::sort should say that the order of elements is unspecified if an exception is thrown

2017-02 (Kona)

Complete

LWG2826

string_view iterators use old wording

2017-02 (Kona)

Complete

LWG2834

Resolution LWG 2223 is missing wording about end iterators

2017-02 (Kona)

Complete

LWG2835

LWG 2536 seems to misspecify <tgmath.h>

2017-02 (Kona)

Complete

LWG2837

gcd and lcm should support a wider range of input values

2017-02 (Kona)

Complete

LWG2838

is_literal_type specification needs a little cleanup

2017-02 (Kona)

Complete

LWG2842

in_place_t check for optional::optional(U&&) should decay U

2017-02 (Kona)

Complete

LWG2850

std::function move constructor does unnecessary work

2017-02 (Kona)

Complete

LWG2853

Possible inconsistency in specification of erase in [vector.modifiers]

2017-02 (Kona)

Complete

LWG2855

std::throw_with_nested(“string_literal”)

2017-02 (Kona)

Complete

LWG2857

{variant,optional,any}::emplace should return the constructed value

2017-02 (Kona)

Complete

LWG2861

basic_string should require that charT match traits::char_type

2017-02 (Kona)

Complete

LWG2866

Incorrect derived classes constraints

2017-02 (Kona)

Nothing To Do

LWG2868

Missing specification of bad_any_cast::what()

2017-02 (Kona)

Complete

LWG2872

Add definition for direct-non-list-initialization

2017-02 (Kona)

Complete

LWG2873

Add noexcept to several shared_ptr related functions

2017-02 (Kona)

Complete

LWG2874

Constructor shared_ptr::shared_ptr(Y*) should be constrained

2017-02 (Kona)

Complete

13

LWG2875

shared_ptr::shared_ptr(Y*, D, […]) constructors should be constrained

2017-02 (Kona)

Complete

LWG2876

shared_ptr::shared_ptr(const weak_ptr<Y>&) constructor should be constrained

2017-02 (Kona)

Complete

14

LWG2878

Missing DefaultConstructible requirement for istream_iterator default constructor

2017-02 (Kona)

Complete

LWG2890

The definition of ‘object state’ applies only to class types

2017-02 (Kona)

Complete

LWG2900

The copy and move constructors of optional are not constexpr

2017-02 (Kona)

Complete

LWG2903

The form of initialization for the emplace-constructors is not specified

2017-02 (Kona)

Complete

LWG2904

Make variant move-assignment more exception safe

2017-02 (Kona)

Complete

LWG2905

is_constructible_v<unique_ptr<P, D>, P, D const &> should be false when D is not copy constructible

2017-02 (Kona)

Complete

LWG2908

The less-than operator for shared pointers could do more

2017-02 (Kona)

Complete

LWG2911

An is_aggregate type trait is needed

2017-02 (Kona)

Complete

LWG2921

packaged_task and type-erased allocators

2017-02 (Kona)

Complete

20

Originally implemented in LLVM 6 but reverted later. Old documentation incorrectly said it was implemented.

LWG2934

optional<const T> doesn’t compare with T

2017-02 (Kona)

Complete

LWG2901

Variants cannot properly support allocators

2017-07 (Toronto)

Complete

LWG2955

to_chars / from_chars depend on std::string

2017-07 (Toronto)

Nothing To Do

Resolved by P0682R1

LWG2956

filesystem::canonical() still defined in terms of absolute(p, base)

2017-07 (Toronto)

Complete