Skip to content
Akira Takahashi edited this page Mar 1, 2019 · 226 revisions

C++17の対応状況

参照記事

Editor's Report

言語機能で採択されたもの

コンパイラの実装状況ページにまとめた

  • N4262 Wording for Forwarding References

ライブラリで採択されたもの

paper 説明 対応状況(空 or 完了 or 対応しない)
N3911 void_t 完了
N4089 Safe conversions in unique_ptr<T[]>, revision 2
N4169 INVOKEコンセプトに従った関数呼び出しをするinvoke()関数 完了
N4190 非推奨になっていたauto_ptr, random_shuffle, 古い<functional>の機能を削除 完了
N4258 標準ライブラリのnoexcept指定を整理
N4259 std::uncaught_exceptions() 完了
N4277 TriviallyCopyable reference_wrapper 完了
N4279 unique-key mapのインタフェース改善 完了
N4280 コンテナの要素情報にアクセスする非メンバ関数版 完了
N4284 連続イテレータ
N4285 例外仕様と送出式の仕様を整理
N4387 pairtupleを改善
N4389 bool_constant 完了
N4508 shared_mutex 完了
N4366 unique_ptrのテンプレート代入演算子にSFINAEルールが不足していたので追加
N4510 標準コンテナに不完全型の最小サポートを追加
P0004R1 非推奨だったiostreamsのエイリアスを削除
P0006R0 値を返す型特性クラスのconstexpr変数テンプレート版 完了
P0092R1 <chrono>durationtime_pointに対する丸め演算関数 floor(), ceil(), round()。 およびdurationに対する絶対値関数 abs() 完了
P0007R1 オブジェクトをconstにするas_const()関数 完了
P0156R2 lock_guardの可変引数版としてscoped_lockを新設 完了
P0074R0 owner_lessで任意の要素型を持つshared_ptr同士を比較できるようにする 完了
P0013R1 コンパイル時条件の論理演算を行う型特性 conjunction, disjunction, negationを追加 完了
P0024R2 Parallelism TS 完了
サンプルコードはコンパイラが実装したら適時足す
P0226R1 数学の特殊関数 完了
P0220R1 any 完了
P0220R1 optional 完了
P0220R1 string_view 完了
P0220R1 メモリプール
P0220R1 検索アルゴリズム 完了
P0220R1 サンプリングアルゴリズム 完了
P0220R1 タプルを展開して関数呼び出しするapply関数 完了
P0218R1 Filesystem TS 完了
P0033R1 shared_from_thisの指す先が書き換わらないことを規定
P0005R4 not_fn 完了
P0152R1 constexpr atomic<T>::is_always_lock_free 完了
P0185R1 swap可能かを判定する型特性クラス 完了
P0253R1 検索アルゴリズムインタフェースの設計ミスを修正 完了
P0025R0 値を範囲内に収めるclamp()関数 完了
P0154R1 false sharingとtrue sharingを制御する定数 完了
P0030R1 std::hypot()関数に3引数版のオーバーロードを追加 完了
P0031R0 reverse_iterator, move_iterator, arrayの変更操作とランダムアクセスにconstexprを追加 完了
P0272R1 basic_stringの非constdata()メンバ関数
P0077R2 is_callableis_nothrow_callable 完了
P0063R3 Cの参照をC99からC11に変更
P0175R1 C互換ライブラリの概要を記載する
P0088R3 variant
P0307R2 optional>=比較 完了
P0393R3 variant>=比較
P0032R3 variantanyoptionalを一様のインタフェースにする optionalとany完了
P0067R5 ロケール依存なし、フォーマット解析なしの高速な文字列・数値変換
P0254R2 basic_string側にbasic_string_viewをパラメータとして受け取るオーバーロードを追加 完了
P0258R2 has_unique_object_representations型特性 完了
P0040R3 未初期化メモリのアルゴリズムと、デストラクタ呼び出しの関数 完了
P0084R2 emplace_front()emplace_back()の戻り値として追加した要素への参照を返す 完了
P0302R1 std::functionのアロケータサポートを削除 完了
P0083R3 連想コンテナのsplice
P0163R0 shared_ptr::weak_type 完了
P0209R2 タプルからT型オブジェクトを構築するmake_from_tuple()関数 完了
P0295R0 gcd()lcm() 完了
P0174R2 std::iteratorを非推奨化 完了
P0174R2 std::allocator<void>の特殊化を非推奨化 完了
P0174R2 std::allocatorの以下のメンバを非推奨化。size_type, difference_type, pointer, const_pointer, reference, const_reference, rebind, address(), allocate()メンバ関数のhintパラメータ, max_size(), construct(), destroy() 完了
P0174R2 std::raw_storage_iteratorを非推奨 完了
P0174R2 get_temporary_buffer()return_temporary_buffer()を非推奨化 完了
P0174R2 is_literal_typeを非推奨化 完了
P0337R0 polymorphic_allocatorの代入演算子をdelete定義
P0358R1 not_fnの仕様整理 完了
P0219R1 パス同士の関係演算 完了
P0392R0 pathクラスによるstring_viewのアダプト 完了
P0394R4 並列アルゴリズムでのterminate()のハンドリング 完了
P0336R1 並列アルゴリズムの実行ポリシーを名称変更 完了
P0371R1 memory_order_consumeを一時的に非推奨化 完了
P0346R1 乱数ライブラリの言葉づかいを変更。 UniformRandomNumberGenerator を UniformRandomBitGenerator に変更。URNGをURBGに変更 完了
P0180R2 std[0-9]+名前空間を将来のために予約 完了
P0426R0 char_traitsconstexpr対応 完了
P0403R0 basic_string_viewのリテラル 完了
P0505R0 Chronoライブラリ durationクラスとtime_pointクラスの変更操作をconstexpr対応 完了
P0418R1 atomicメモリオーダーの調整
P0508R0 node_handleの構造化束縛対応
P0414R1, P0497R0 shared_ptrの配列対応 完了
P0504R0 in_placeタグの見直し 完了
P0510R0 variantのテンプレート引数に指定する型として、参照、不完全型、配列を許可しない。および空のvariantを許可しない
P0509R0 例外ハンドリングの制限を更新
P0502R0 並列アルゴリズムからの例外脱出の処理を更新 完了
P0503R0 "literal type"の使い方を正す
P0521R0 shared_ptr::use_count()の仕様を明確化。デバッグでしか使用しないshared_ptr::unique()メンバ関数を非推奨化 完了
P0513R0 hashの特殊化をやめて、文章仕様としてハッシュ化できる条件を記載
P0517R0 future_errorのオブジェクトを作れるようにする
P0435R1 common_typeの問題を修正
P0298R3 std::byte型を追加 完了
P0317R1 Directory entry caching for filesystem 完了
P0492R2 Proposed resolution of C++17 National Body comments for filesystems 完了
P0430R2 File system library on non-POSIX-like operating systems 完了
P0452R1 Unifying <numeric> parallel algorithms 完了
P0518R1 Allowing copies as arguments to function objects given to parallel algorithms 完了
P0523R1 Complexity of parallel algorithms 完了
P0574R1 Algorithm complexity constraints and parallel overloads 完了
P0467R2 Iterator concerns for parallel algorithms 完了
P0623R0 Final C++17 parallel algorithms fixes 完了
P0604R0 Resolving GB 55, US 84, US 85, US 86 完了
P0607R0 inline variables for the standard library 完了
P0618R0 Deprecating <codecvt> 完了
P0599R1 noexcept for hash functions
P0433R2 Integrating template deduction for class templates into the standard library
P0558R1 Resolving atomic<T> named base class inconsistencies 完了
P0548R1 common_type and duration

採択されたCore Issue

CWG DR 説明 対応状況(空 or 完了 or 対応しない)
1274 Common nonterminal for expression and braced-init-list
1391 Conversions to parameter types with non-deduced template arguments
1722 noexcept付きのラムダ式から変換する関数ポインタにnoexceptを付加する 完了
1847 Clarifying compatibility during partial ordering
1863 Requirements on thrown object type to support std::current_exception()
1949 "sequenced after" instead of "sequenced before"
1975 Permissible declarations for exception-specifications
1981 Implicit contextual conversions and explicit
1990 Ambiguity due to optional decl-specifier-seq
2000 header-name outside #include directive
2004 Unions with mutable members in constant expressions
2006 Cv-qualified void types
2015 odr-use of deleted virtual functions
2016 Confusing wording in description of conversion function
2019 Member references omitted from description of storage duration
2024 Dependent types and unexpanded parameter packs
2026 Zero-initialization and constexpr
2027 Unclear requirements for multiple alignas specifiers
2031 Missing incompatibility for &&
2052 Template argument deduction vs overloaded operators
2075 Passing short initializer lists to array reference parameters
2101 Incorrect description of type- and value-dependence
2120 Array as first non-static data member in standard-layout class
1734 Nontrivial deleted copy functions
1895 Deleted conversions in conditional operator operands
1930 init-declarator-list vs member-declarator-list
1932 Bit-field results of conditional operators (no changes, resolved by 1895)
1955 #elif with invalid controlling expression
2001 non-directive is underspecified
2008 Default template-arguments underspecified
2017 Flowing off end is not equivalent to no-expression return (with normative correction, see below)
2082 Referring to parameters in unevaluated operands of default arguments
2084 NSDMIs and deleted union default constructors
2093 Qualification conversion for pointer-to-member handler matching
2099 Inferring the bound of an array static data member
2124 Signature of constructor template
2130 Over-aligned types in new-expressions
2157 Further disambiguation of enumeration elaborated-type-specifier
212 Implicit instantiation is not described clearly enough
238 Precision and accuracy constraints on floating point
242 Interpretation of old-style casts
1284 Should the lifetime of an array be independent of that of its elements?
1315 Restrictions on non-type template arguments in partial specializations
1496 Triviality with deleted and missing default constructors
1638 Declaring an explicit specialization of a scoped enumeration
1872 Instantiations of constexpr templates that cannot appear in constant expressions
1992 new (std::nothrow) int[N] can throw
2012 Lifetime of references
2032 変数テンプレートのデフォルトテンプレート引数 完了
2033 Redundant restriction on partial specialization argument
2038 autoの波括弧初期化による型推論規則について、C++14との非互換をドキュメント化 完了
2039 Constant conversions to bool
2040 trailing-return-type no longer ambiguous
2041 Namespace for explicit class template specialization
2044 decltype(auto) and void
2047 Coordinating “throws anything” specifications
2061 Inline namespace after simplifications
2063 Type/nontype hiding in class scope
2064 Conflicting specifications for dependent decltype-specifiers
2066 Does type-dependent imply value-dependent? (no changes, resolved by 2109)
2068 When can/must a defaulted virtual destructor be defined?
2069 Do destructors have names?
2071 typedef with no declarator
2079 [[ appearing in a balanced-token-seq
2085 Invalid example of adding special member function via default argument
2095 Capturing rvalue references to functions by copy
2096 Constraints on literal unions
2098 Is uncaught_exceptions() per-thread?
2104 Internal-linkage constexpr references and ODR requirements
2106 Unclear restrictions on use of function-type template arguments
2107 Lifetime of temporaries for default arguments in array copying
2109 Value dependence underspecified
2113 Incomplete specification of types for declarators
2122 Glvalues of void type
2129 Non-object prvalues and constant expressions
2140 Lvalue-to-rvalue conversion of std::nullptr_t
2141 Ambiguity in new-expression with elaborated-type-specifier
2146 Scalar object vs memory location in definition of “unsequenced”
2147 Initializer-list arguments and pack deduction
2153 pure-specifier in friend declaration
2154 Ambiguity of pure-specifier
2156 Definition of enumeration declared by using-declaration
2163 Labels in constexpr functions
2167 Non-member references with lifetimes within the current evaluation
2175 Ambiguity with attribute in conversion operator declaration
2176 Destroying the returned object when a destructor throws
2180 Virtual bases in destructors and defaulted assignment operators
1861 Values of a bit-field
2022 Copy elision in constant expressions (example updated to match P0135R1)
2076 List-initialization of arguments for constructor parameters
2091 Deducing reference non-type template arguments
2137 List-initialization from object of same type
2145 Parenthesized declarator in function definition
2171 Triviality of copy constructor with less-qualified parameter
1395 Partial ordering of variadic templates reconsidered
1825 Partial ordering between variadic and non-variadic function templates (no changes, resolved by 1395)
1961 Potentially-concurrent actions within a signal handler
2143 Value-dependency via injected-class-name
2155 Defining classes and enumerations via using-declarations
2271 Aliasing this
2100 Value-dependent address of static data member of class template
2094 Trivial copy/move constructor for class with volatile member
1677 Constant initialization via aggregate initialization
1860 What is a "direct member?"
2174 Unclear rules for friend definitions in templates
2205 Restrictions on use of alignas
2218 Ambiguity and namespace aliases
2201 Cv-qualification of array types
2206 Composite type of object and function pointers
2214 Missing requirement on representation of integer values
2220 Hiding index variable in range-based for
2224 Member subobjects and base-class casts
2259 Unclear context describing ambiguity
2262 Attributes for asm-definition
426 Identically-named variables, one internally and one externally linked, allowed?
727 In-class explicit specializations
1622 Empty aggregate initializer for union (no changes, resolved by 2272)
1710 Missing template keyword in class-or-decltype
2196 Zero-initialization with virtual base classes
2198 Linkage of enumerators
2211 Hiding by lambda captures and parameters
2247 Lambda capture and variable argument list
2248 Problems with sized delete
2251 Unreachable enumeration list-initialization
2268 Unions with mutable members in constant expressions revisited
2272 Implicit initialization of aggregate members of reference type
2276 Dependent noexcept and function type-dependence
P0612R0 NB comment CH 2: volatile
P0613R0 NB comment GB15: Resolution of Core Issue 2011
P0615R0 Renaming for structured bindings 完了
P0620R0 Drafting for class template argument deduction issues
P0270R3 Removing C dependencies from signal handler wording
P0250R3 Wording improvements for initialization and thread ids
__cplusplusマクロの値を201402Lから201703Lに更新 完了
コミット8baa18c ECMAScript商標の謝辞を追加
コミット42c5a2c 基準となるLIA-1とIEEE 754の参照を追加

C++17の規格書には入らないが、実際にはC++17に含まれる変更:

CWG DR 説明 対応状況(空 or 完了 or 対応しない)
2253 Unnamed bit-fields and zero-initialization
1523 Point of declaration in range-based for
1704 Type checking in explicit instantiation of variable templates
1728 Type of an explicit instantiation of a variable template (no changes, resolved by 1704)
1836 Use of class type being defined in trailing-return-type
2273 Inheriting constructors vs implicit default constructor
2277 Ambiguity inheriting constructors with default arguments (no changes, resolved by 2273)
2287 Pointer-interconvertibility in non-standard-layout unions
2290 Unclear specification for overload resolution and deleted special member functions
P0702R1 Language support for constructor template argument deduction
P0727R0 Temporary objects vs temporary expressions
2342 Reference reinterpret_cast and pointer-interconvertibility
1862 Determining "corresponding members" for friendship
2177 Placement operator delete and parameter copies
2305 Explicit instantiation of constexpr or inline variable template
2307 Unclear definition of "equivalent to a nontype template parameter"
2313 Redeclaration of structured binding reference variables
2315 What is the "corresponding special member" of a variant member?
2338 Undefined behavior converting to short enums with fixed underlying types

採択されたLibrary Issue

LWG DR 説明 対応状況(空 or 完了 or 対応しない)
1169 num_get not fully compatible with strto*
2072 Unclear wording about capacity of temporary buffers
2101 Some transformation types can produce impossible types
2111 Which unexpected/terminate handler is called from the exception handling runtime?
2119 Missing hash specializations for extended integer types
2127 Move-construction with raw_storage_iterator
2133 Attitude to overloaded comma for iterators
2156 非順序連想コンテナのreserve(n)がn-1個の要素を予約してしまう 完了
2218 Unclear how containers use allocator_traits::construct()
2219 INVOKE-ing a pointer to member with a reference_wrapper as the object expression
2224 Ambiguous status of access to non-live objects
2234 assert()は定数式内での使用を許可すべき 完了
2244 Issue on basic_istream::seekg
2250 Follow-up On Library Issue 2207
2259 Issues in 17.6.5.5 rules for member functions
2273 regex_match ambiguity
2336 is_trivially_constructible/is_trivially_assignable traits are always false
2353 std::nextが制限しすぎ 完了
2367 pair and tuple are not correctly implemented for is_constructible with no args
2380 May <cstdlib> provide long ::abs(long) and long long ::abs(long long)?
2384 Allocator's deallocate function needs better specification
2385 function::assign allocator argument doesn't make sense 完了
2435 reference_wrapper::operator()の備考は役に立たないので削除すべき 対応しない
2447 Allocators and volatile-qualified value types
2462 std::ios_base::failure is overspecified
2466 allocator_traits::max_size()のデフォルト挙動が間違っている 完了
2469 Wrong specification of Requires clause of operator[] for map and unordered_map
2473 basic_filebuf's relation to C FILE semantics
2476 scoped_allocator_adaptor is not assignable
2477 Inconsistency of wordings in std::vector::erase() and std::deque::erase()
2483 throw_with_nested() should use is_final
2484 rethrow_if_nested() is doubly unimplementable
2485 get()関数にconst tuple&&のオーバーロードを追加 完了
2486 mem_fn() should be required to use perfect forwarding
2487 bind() should be const-overloaded, not cv-overloaded
2489 mem_fn() should be noexcept
2492 Clarify requirements for comp
2495 There is no such thing as an Exception Safety element
2192 Validity and return type of std::abs(0u) is unclear
2276 Missing requirement on std::promise::set_exception
2296 std::addressof()constexprにすべき 完了
2450 (greater|less|greater_equal|less_equal)<void> do not yield a total order for pointers
2520 N4089 broke initializing unique_ptr<T[]> from a nullptr
2522 [fund.ts.v2] Contradiction in set_default_resource specification
2523 std::promise synopsis shows two set_value_at_thread_exit() for no apparent reason
2537 Constructors for priority_queue taking allocators should call make_heap
2539 [fund.ts.v2] invocation_trait definition definition doesn't work for surrogate call functions
2545 Simplify wording for bind without explicitly specified return type
2557 Logical operator traits are broken in the zero-argument case
2558 [fund.ts.v2] Logical operator traits are broken in the zero-argument case
2559 Error in LWG 2234's resolution
2560 is_constructibleに関数型を適用した場合の仕様が未規定 完了
2565 std::function's move constructor should guarantee nothrow for reference_wrappers and function pointers
2566 Requirements on the first template parameter of container adaptors
2571 §[map.modifiers]/2 imposes nonsensical requirement on insert(InputIterator, InputIterator)
2572 shared_ptr::operator*の備考で、CV修飾されたvoidに対しても正しく適用できるようにした 完了
2574 [fund.ts.v2] std::experimental::function::operator=(F&&) should be constrained
2575 [fund.ts.v2] experimental::function::assign should be removed 完了
2576 istream_iteratorostream_iteratorは、ポインタの取得にstd::addressof()を使用するべき 対応しない
2577 {shared,unique}_lockはポインタ取得にstd::addressof()を使用すべき 対応しない
説明用変数の事後条件は書いていなかった
2579 Inconsistency wrt Allocators in basic_string assignment vs. basic_string::assign
2581 <type_traits>の変数テンプレートの特殊化を禁止すべき 完了
2582 §[res.on.functions]/2's prohibition against incomplete types shouldn't apply to type traits
2583 basic_string(str, pos)のアロケータを渡す方法がない 完了
2585 forward_list::resize(size_type, const value_type&) effects incorrect
2586 Wrong value category used in scoped_allocator_adaptor::construct()
2590 Aggregate initialization for std::array
2181 Exceptions from seed sequence operations
2309 mutex::lock()device_or_resource_busyを送出すべきではない 完了
2310 Public exposition only member in std::array
2328 Rvalue stream extraction should use perfect forwarding
2393 std::function's Callable definition is broken
2426 Issue about compare_exchange
2436 Comparators for associative containers should always be CopyConstructible
2441 固定幅整数のatomicクラスの別名を提供すべき 完了
2542 Missing const requirements for associative containers
2549 tuple EXPLICIT constructor templates that take tuple parameters end up taking references to temporaries and will create dangling references
2550 非順序連想コンテナのclear()メンバ関数の計算量が、なにに対して線形時間を明記する 対応しない
2667 path::root_directory() description is confusing
2669 recursive_directory_iterator effects refers to non-existent functions
2670 system_complete refers to undefined variable base
2671 Errors in copy
2673 status() effects cannot be implemented as specified
2596 vector::data()はポインタの取得にaddressof()を使用するべき 完了
2674 Bidirectional iterator requirement on path::iterator is very expensive
2683 filesystem::copy() says "no effects" (see below) 完了
2684 priority_queue lacking comparator typedef
2685 shared_ptr deleters must not throw on move construction
2688 clamp misses preconditions and has extraneous condition on result
2689 Parallel versions of std::copy and std::move shouldn't be in order
2698 Effect of assign() on iterators/pointers/references
2706 Error reporting for recursive_directory_iterator::pop() is under-specified
2707 path construction and assignment should have string_type&& overloads
2710 "Effects: Equivalent to ..." doesn't count "Synchronization:" as determined semantics
2687 {inclusive,exclusive}_scan misspecified
2704 recursive_directory_iterator's members should require '*this is dereferenceable'
2711 path is convertible from approximately everything under the sun
2725 filesystem::exists(const path&, error_code&) error reporting 完了
2312 tuple's constructor constraints need to be phrased more precisely
2422 std::numeric_limits<T>::is_moduloの符号あり整数型に対する仕様が間違っている 完了
2709 offsetof is unnecessarily imprecise
2716 Specification of shuffle and sample disallows lvalue URNGs
2718 Parallelism bug in [algorithms.parallel.exec] p2
2719 permissions function should not be noexcept due to narrow contract
2720 permissions function incorrectly specified for symlinks
2721 remove_all has incorrect post conditions
2723 Do directory_iterator and recursive_directory_iterator become the end iterator upon error?
2724 The protected virtual member functions of memory_resource should be private
2726 [recursive_]directory_iterator::increment(error_code&) is underspecified
2727 Parallel algorithms with constexpr specifier
2728 status(p).permissions() and symlink_status(p).permissions() are not specified
2770 tuple_size<const T> specialization breaks decomposition declarations
2062 Effect contradictions w/o no-throw guarantee of std::function swaps
2166 Heap property underspecified?
2221 nullptrに対する出力ストリーム演算子を追加 完了
2223 shrink_to_fitの効果に、イテレータの有効性を記載する 完了
2261 Are containers required to use their pointer type internally?
2394 locale::name specification unclear — what is implementation-defined?
2458 N3778 and new library deallocation signatures 完了
2460 LWG issue 2408 and value categories
2468 Self-move-assignment of library types
2475 Allow overwriting of std::basic_string terminator with charT() to allow cleaner interoperation with legacy APIs
2503 multiline option should be added to syntax_option_type 完了
2510 Tag types should not be DefaultConstructible
2514 Type traits must not be final
2519 Iterator operator-= has gratuitous undefined behaviour
2531 future::get should explicitly state that the shared state is released
2534 Constrain rvalue stream operators (with normative changes, see below)
2536 What should <complex.h> do?
2540 unordered_multimap::insert hint iterator
2544 istreambuf_iterator(basic_streambuf<charT, traits>* s) effects unclear when s is 0
2556 Wide contract for future::share()
2562 Consistent total ordering of pointers by comparison functors
2567 Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits
2569 conjunction and disjunction requirements are too strict
2578 Iterator requirements should reference iterator traits
2584 <regex> ECMAScript IdentityEscape is ambiguous
2589 match_results can't satisfy the requirements of a container
2591 std::function's member template target() should not lead to undefined behaviour
2598 addressof()が一時オブジェクトに対して動作してしまう 完了
2664 operator/ (and other append) semantics not useful if argument has root
2672 Should is_empty use error_code in its specification?
2676 Provide filesystem::path overloads for "File-based streams"
2678 std::filesystem enum classes overspecified 完了
2679 Inconsistent use of "Effects: Equivalent to"
2680 Add "Equivalent to" to filesystem 完了
2681 filesystem::copy() cannot copy symlinks 完了
2686 Why is std::hash specialized for error_code, but not error_condition?
2694 Application of LWG 436 accidentally deleted definition of "facet"
2696 Interaction between make_shared and enable_shared_from_this is underspecified
2699 Missing restriction in [numeric.requirements]
2712 copy_file(from, to, ...) has a number of unspecified error conditions
2722 equivalent incorrectly specifies throws clause
2729 Missing SFINAE on std::pair::operator=
2732 Questionable specification of path::operator/= and path::append 完了
2735 std::abs(short), std::abs(signed char) and others should return int instead of double in order to be compatible with C++98 and C
2736 nullopt_t insufficiently constrained 完了
2738 is_constructiblevoidを適用した場合の仕様が未規定 完了
2739 Issue with time_point non-member subtraction with an unsigned duration
2740 constexpr optional<T>::operator-> 完了
2742 Inconsistent string interface taking string_view 完了
2744 any's in_place constructors
2747 Possibly redundant std::move in [alg.foreach]
2748 swappable traits for optionals 完了
2749 swappable traits for variants
2752 Throws: clauses of async and packaged_task are unimplementable
2754 The in_place constructors and emplace functions added by P0032R3 don't require CopyConstructible
2755 [string.view.io] uses non-existent basic_string_view::to_string function 完了
2756 optional<T> should 'forward' T's implicit conversions 完了
2758 std::string{}.assign("ABCDE", 0, 1) is ambiguous
2759 gcd / lcm and bool 完了
2760 non-const basic_string::data should not invalidate iterators
2765 Did LWG 1123 go too far?
2767 not_fn call_wrapper can form invalid types 完了
2771 Broken Effects: of some basic_string::compare functions in terms of basic_string_view 完了
2773 Making std::ignore constexpr
2777 basic_string_view::copy should use char_traits::copy 完了
2778 basic_string_view is missing constexpr 完了
2260 Missing requirement for Allocator::pointer
2768 any_cast and move semantics (no changes, resolved by 2769)
2769 Redundant const in the return type of any_cast(const any&)
2781 Contradictory requirements for std::function and std::reference_wrapper
2782 scoped_allocator_adaptor constructors must be constrained
2784 Resolution to LWG 2484 is missing "otherwise, no effects" and is hard to parse
2785 quoted should work with basic_string_view 完了
2786 Annex C should mention shared_ptr changes for array support
2787 [file_status.cons] doesn't match class definition
2788 basic_string range mutators unintentionally require a default constructible allocator
2789 Equivalence of contained objects
2790 Missing specification of istreambuf
2794 Missing requirements for allocator pointers
2795 [global.functions] provides incorrect example of ADL use
2796 tuple should be a literal type
2804 Unconditional constexpr default constructor for istream_iterator
2806 Base class of bad_optional_access 完了
2807 std::invoke should use std::is_nothrow_callable
2824 list::sort should say that the order of elements is unspecified if an exception is thrown
2826 string_view iterators use old wording 完了
2834 Resolution to LWG 2223 is missing wording about end iterators
2835 Resolution to LWG 2536 seems to misspecify <tgmath.h>
2837 gcd and lcm should support a wider range of input values 完了
2838 is_literal_type specification needs a little cleanup
2842 in_place_t check for optional::optional(U&&) should decay U 完了
2850 std::function move constructor does unnecessary work
2853 Possible inconsistency in specification of erase in [vector.modifiers]
2855 std::throw_with_nested("string_literal")
2866 Incorrect derived classes constraints
2857 {variant,optional,any}::emplace should return the constructed value optional完了
2868 Missing specification of bad_any_cast::what() 完了
2872 Add definition for "direct-non-list-initialization"
2890 The definition of "object state" applies only to class types
2801 Default-constructibility of unique_ptr
2861 basic_string should require that charT match traits::char_type
2873 shared_ptrの所有権ベース比較の関数にnoexceptを追加 完了
2874 Constructor shared_ptr::shared_ptr(Y*) should be constrained
2875 shared_ptr::shared_ptr(Y* | D | […]) constructors should be constrained
2878 Missing DefaultConstructible requirement for istream_iterator default constructor
2802 shared_ptr constructor requirements for a deleter
2876 shared_ptr::shared_ptr(const weak_ptr<Y>&) constructor should be constrained
2900 The copy and move constructors of optional are not constexpr
2903 The form of initialization for the emplace-constructors is not specified
2904 Make variant move-assignment more exception safe
2905 is_constructible_v<unique_ptr<P | D> | P | D const &> should be false when D is not copy constructible
2908 The less-than operator for shared pointers could do more
2911 An is_aggregate_type trait is needed 完了
2921 packaged_task and type-erased allocators
2934 optional<const T> doesn't compare with T 完了

C++17の規格書には入らないが、実際にはC++17に含まれる変更:

LWG DR 説明 対応状況(空 or 完了 or 対応しない)
2444 Inconsistent complexity for std::sort_heap
2593 Moved-from state of Allocators
2597 std::log misspecified for complex numbers
2783 stack::emplace() and queue::emplace() should return decltype(auto)
2932 Constraints on parallel algorithm implementations are underspecified
2937 Is equivalent("existing_thing", "not_existing_thing") an error?
2940 result_of specification also needs a little cleanup
2942 LWG 2873's resolution missed weak_ptr::owner_before
2954 Specialization of the convenience variable templates should be prohibited
2961 Bad postcondition for set_default_resource
2966 Incomplete resolution of US 74
2974 Diagnose out of bounds tuple_element / variant_alternative
2901 variants cannot properly support allocators
2956 filesystem::canonical() still defined in terms of absolute(p, base) 完了
2952 iterator_traits should work for pointers to cv T 完了
P0682R1 Repairing elementary string conversions
P0739R0 Some improvements to class template argument deduction integration into the standard library 完了
2870 Default value of parameter theta of polar should be dependent
2935 What should create_directories do when p already exists but is not a directory?
2941 [thread.req.timing] wording should apply to both member and namespace-level functions
2944 LWG 2905 accidentally removed requirement that construction of the deleter doesn't throw an exception
2945 Order of template parameters in optional comparisons
2948 unique_ptr does not define operator<< for stream output
2950 std::byte operations are misspecified 完了
2953 LWG 2853 should apply to deque::erase too
2964 Apparently redundant requirement for dynamic_pointer_cast
2965 Non-existing path::native_string() in filesystem_error::what() specification 完了
2972 What is is_trivially_destructible_v<int>?
2976 Dangling uses_allocator specialization for packaged_task
2977 unordered_meow::merge() has incorrect Throws: clause
2978 Hash support for pmr::string and friends
2979 aligned_union should require complete object types
2980 Cannot compare_exchange empty pointers
2981 Remove redundant deduction guides from standard library
2982 Making size_type consistent in associative container deduction guides
2988 Clause 32 cleanup missed one typename
2993 reference_wrapper<T> conversion from T&&
2998 Requirements on function objects passed to {forward_,}list-specific algorithms
3001 weak_ptr::element_type needs remove_extent_t
3024 variant's copies must be deleted instead of disabled via SFINAE
2958 Moves improperly defined as deleted
Clone this wiki locally