Skip to content
Akira Takahashi edited this page Aug 24, 2026 · 228 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を一様のインタフェースにする 完了
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* 完了: num_getget/do_getページを新規作成し、strtoll/strtoull/strtof等に整合する解析仕様・範囲外の格納値を反映(クラスページからリンク)
2072 Unclear wording about capacity of temporary buffers 完了: get_temporary_bufferが要求どおりの容量を返すとは限らない旨は本文・参照とも反映済み
2101 Some transformation types can produce impossible types 完了: add_lvalue_reference/add_rvalue_reference/add_pointerが参照可能でない型で不適格な型を生成しないよう整理(各ページの効果・参照に反映)
2111 Which unexpected/terminate handler is called from the exception handling runtime? 完了: 例外がアクティブな状態でハンドラが変更された場合どのハンドラが呼ばれるかは未規定、とterminateページの備考・参照に反映(unexpected機構はC++17で削除済み)
2119 Missing hash specializations for extended integer types 完了: 拡張整数型を含む全整数型に特殊化がある旨をhashページの表・参照に追記
2127 Move-construction with raw_storage_iterator 完了: raw_storage_iterator::operator=にムーブ代入(2)を追記
2133 Attitude to overloaded comma for iterators 対応しない: アルゴリズムの等価コード中でユーザー定義のカンマ演算子を呼ばないための内部的な字句修正((void)キャスト)で、観測可能なAPI/挙動の変更ではない
2156 非順序連想コンテナのreserve(n)がn-1個の要素を予約してしまう 完了
2218 Unclear how containers use allocator_traits::construct() 対応しない: 一般コンテナ要件(アロケータのrebind利用)の明確化で、個別ページで扱う粒度ではない
2219 INVOKE-ing a pointer to member with a reference_wrapper as the object expression 完了: INVOKE要件ページのC++17定義にreference_wrapperのケースが反映済み、invokeページにも例あり(参照追記)
2224 Ambiguous status of access to non-live objects 対応しない: ライブラリ全体の一般要件[res.on.objects](生存期間外アクセスは未定義動作)で、個別ページで扱う粒度ではない
2234 assert()は定数式内での使用を許可すべき 完了
2244 Issue on basic_istream::seekg 完了: (off_type, seekdir)版でも初めにeofbitを消去する旨をseekgの効果・実装例・参照に反映
2250 Follow-up On Library Issue 2207 対応しない: bitset/basic_string/threadの矛盾したRequires句を削除する文言整理で、観測可能な挙動変更はなく、各ページは既に例外送出を記載済み
2259 Issues in 17.6.5.5 rules for member functions 対応しない: 実装がメンバ関数にデフォルト引数やcv/参照修飾を追加できる、というライブラリ全体の一般要件の明確化で、個別ページで扱う粒度ではない
2273 regex_match ambiguity 完了: 文字列全体にマッチする候補のみを考慮する旨はregex_match概要に反映済み(参照追記)
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 完了: デフォルトコンストラクタ(1)の条件付き参加はpair/tupleの制約表に反映済み(参照追記)
2380 May <cstdlib> provide long ::abs(long) and long long ::abs(long long)? 対応しない: C++ヘッダの名前をグローバル名前空間にまとめて注入してよい、というヘッダの名前注入に関する一般規則の明確化で、個別ページで扱う粒度ではない
2384 Allocator's deallocate function needs better specification 完了: allocator::deallocateの事前条件は既に「allocateの戻り値であること」を正しく記載済み(オブジェクト破棄要件の削除も反映済み)
2385 function::assign allocator argument doesn't make sense 完了
2435 reference_wrapper::operator()の備考は役に立たないので削除すべき 対応しない
2447 Allocators and volatile-qualified value types 対応しない: アロケータ要件でvalue_type等がcv修飾されないオブジェクト型であることを要求する一般要件の明確化で、個別ページで扱う粒度ではない
2462 std::ios_base::failure is overspecified 完了: system_error派生クラスへのシノニムとして定義してよい旨をios_base::failureの参照に追記(派生の柔軟性は備考で既出)
2466 allocator_traits::max_size()のデフォルト挙動が間違っている 完了
2469 Wrong specification of Requires clause of operator[] for map and unordered_map 完了: map/unordered_mapoperator[]try_emplaceで規定する旨を備考・参照に反映
2473 basic_filebuf's relation to C FILE semantics 完了: basic_filebuf::seekposfsetpos相当)/syncfflush相当)のページを新規作成し、クラスページからリンク
2476 scoped_allocator_adaptor is not assignable 完了: デフォルト定義のコピー/ムーブ代入演算子(C++17)をメンバ関数表・参照に追記
2477 Inconsistency of wordings in std::vector::erase() and std::deque::erase() 対応しない: deque/vectorのerase効果の文言(どの型の代入演算子か)を統一するeditorialな整理で、観測可能な挙動変更はない
2483 throw_with_nested() should use is_final 完了: finalクラス対応のためのis_final判定をthrow_with_nestedの効果・参照に反映
2484 rethrow_if_nested() is doubly unimplementable 完了: 非多相型では何もしない・静的型/動的型で判定する旨をrethrow_if_nestedの効果・参照に反映
2485 get()関数にconst tuple&&のオーバーロードを追加 完了
2486 mem_fn() should be required to use perfect forwarding 完了: 返すオブジェクトが完全転送するsimple call wrapperである旨をmem_fnの参照に反映(C++20戻り値には完全転送の記述あり)
2487 bind() should be const-overloaded, not cv-overloaded 対応しない: bindが返す呼び出しラッパーのoperator()volatile修飾されないという仕様詳細で、個別ページで扱う粒度ではない
2489 mem_fn() should be noexcept 完了
2492 Clarify requirements for comp 対応しない: 比較関数compが狭義弱順序を満たさない場合は未定義動作、というソートアルゴリズムの一般要件の明確化で、個別ページで扱う粒度ではない
2495 There is no such thing as an Exception Safety element 対応しない: shared_ptrコンストラクタの「例外安全性」記述をEffectsへ統合するeditorialな整理で、観測可能な挙動変更はない
2192 Validity and return type of std::abs(0u) is unclear 完了: intへ昇格できない符号なし整数に対するabsが不適格である旨を<cstdlib>/<cmath>absに反映(cstdlibは既出、参照追記)
2276 Missing requirement on std::promise::set_exception 完了: 引数pがヌルでないことをset_exception/set_exception_at_thread_exitの事前条件・参照に追記
2296 std::addressof()constexprにすべき 完了
2450 (greater|less|greater_equal|less_equal)<void> do not yield a total order for pointers 完了: <void>特殊化がポインタ比較で全順序を与える旨をless/greater/greater_equal/less_equalの備考・参照に反映
2520 N4089 broke initializing unique_ptr<T[]> from a nullptr 完了
2522 [fund.ts.v2] Contradiction in set_default_resource specification 対応しない: [fund.ts.v2]のTS向けissue(Status: TS)。C++17標準での同等修正はLWG 2961で対応済み
2523 std::promise synopsis shows two set_value_at_thread_exit() for no apparent reason 対応しない: クラス概要から冗長なオーバーロード表記を削除するeditorialな整理で、cpprefjpは表形式のため該当なし
2537 Constructors for priority_queue taking allocators should call make_heap 完了: アロケータ付きコンストラクタがmake_heapを呼ぶ旨は効果に反映済み(参照追記)
2539 [fund.ts.v2] invocation_trait definition definition doesn't work for surrogate call functions 対応しない: [fund.ts.v2]のTS向けissue(Status: TS)。C++17標準ではない
2545 Simplify wording for bind without explicitly specified return type 対応しない: bindの効果の文言を簡略化するeditorialな整理で、観測可能な挙動変更はない
2557 Logical operator traits are broken in the zero-argument case 完了: 引数0個の場合の扱いはconjunction/disjunctionの効果に反映済み(参照追記)
2558 [fund.ts.v2] Logical operator traits are broken in the zero-argument case 対応しない: [fund.ts.v2]のTS向けissue(Status: TS)。C++17標準の同等修正はLWG 2557で対応済み
2559 Error in LWG 2234's resolution 完了: assert(E)が定数部分式となる条件(NDEBUGの判定時点)はassertの効果に反映済み(参照追記)
2560 is_constructibleに関数型を適用した場合の仕様が未規定 完了
2565 std::function's move constructor should guarantee nothrow for reference_wrappers and function pointers 完了: ムーブコンストラクタ(4)のreference_wrapper/関数ポインタに対するnothrow保証をfunctionコンストラクタの例外・参照に反映
2566 Requirements on the first template parameter of container adaptors 完了: TContainer::value_typeと同じ型である要件をstack/queue/priority_queueの概要・参照に反映
2571 §[map.modifiers]/2 imposes nonsensical requirement on insert(InputIterator, InputIterator) 対応しない: 範囲版insertに無関係なテンプレート制約(P)が適用されていた文言を除く整理でeditorial、観測可能な挙動変更はない
2572 shared_ptr::operator*の備考で、CV修飾されたvoidに対しても正しく適用できるようにした 完了
2574 [fund.ts.v2] std::experimental::function::operator=(F&&) should be constrained 対応しない: [fund.ts.v2]のTS向けissue(Status: TS)。C++17標準ではない
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 完了: assign(const basic_string&)(1)を*this = strと等価に変更しアロケータ伝播を一貫させた旨を効果・参照に反映
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 対応しない: 効果の文言をvector/dequeresizeと統一する整理でeditorial、観測可能な挙動変更はない
2586 Wrong value category used in scoped_allocator_adaptor::construct() 対応しない: construct内部のis_constructible判定の値カテゴリ(lvalue参照)を初期化式と一致させる仕様修正で、cpprefjpの記述粒度では該当箇所がない
2590 Aggregate initialization for std::array 完了: 集成体初期化一般で初期化可能な旨をarrayの参照に反映
2181 Exceptions from seed sequence operations 対応しない: 乱数エンジン全般([rand.eng]/[rand.adapt])に対し、ユーザー定義Sseqgenerateが投げる例外を伝播するという一般規定で、個別エンジンページで扱う粒度ではない
2309 mutex::lock()device_or_resource_busyを送出すべきではない 完了
2310 Public exposition only member in std::array 完了: 説明専用メンバelemsがpublicである旨・data()規定の整理をarrayの参照に反映
2328 Rvalue stream extraction should use perfect forwarding 完了: 右辺値ストリーム版operator>>(7)が被入力対象をT&&で受け取り完全転送する旨を反映(宣言・効果・参照)
2393 std::function's Callable definition is broken 完了: 格納要件がLvalue-Callableである旨をfunctionコンストラクタの参照に反映
2426 Issue about compare_exchange 対応しない: expected更新の非原子性・データ競合非発生・成功時は不変、といった仕様明確化で、cpprefjpの既存記述(成功時は変更しない/失敗時に現在値を格納)で足りる
2436 Comparators for associative containers should always be CopyConstructible 対応しない: 連想コンテナの比較関数がCopyConstructibleであることを要求する一般要件で、個別ページで扱う粒度ではない
2441 固定幅整数のatomicクラスの別名を提供すべき 完了
2542 Missing const requirements for associative containers 対応しない: 連想コンテナの比較関数がconstで呼び出せることを要求する一般要件で、個別ページで扱う粒度ではない
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 対応しない: incrementの効果でthis->status()(*this)->status()に直す字句修正でeditorial、観測可能な挙動変更はない
2670 system_complete refers to undefined variable base 対応しない: system_completeの効果の未定義変数basecurrent_path()に直すeditorialな整理で、観測可能な挙動変更はない
2671 Errors in copy 対応しない: copyの規定文中の関数シグネチャ・const性の字句修正でeditorial、観測可能な挙動変更はない
2673 status() effects cannot be implemented as specified 対応しない: status()の効果の疑似コード(result == file_typeresult.type() == file_type)の修正でeditorial、観測可能な挙動変更はない
2596 vector::data()はポインタの取得にaddressof()を使用するべき 完了
2674 Bidirectional iterator requirement on path::iterator is very expensive 対応しない: path::iteratorの「等しいイテレータが同一オブジェクトに束縛される」要件を外し実装自由度を広げる規定で、cpprefjpの記述粒度では該当箇所がない
2683 filesystem::copy() says "no effects" (see below) 完了
2684 priority_queue lacking comparator typedef 完了: メンバ型value_compare(C++17)をpriority_queueのメンバ型表・参照に追加
2685 shared_ptr deleters must not throw on move construction 完了: 削除子の非throw構築要件がムーブ構築にも及ぶ旨をshared_ptrコンストラクタの要件・参照に反映
2688 clamp misses preconditions and has extraneous condition on result 完了: 事前条件(low<=high)・戻り値はclampに反映済み(参照追記)
2689 Parallel versions of std::copy and std::move shouldn't be in order 対応しない: 並列版copy/moveが逐次順序を要求しないという仕様明確化で、観測可能な結果は変わらず、cpprefjpの記述粒度では扱わない
2698 Effect of assign() on iterators/pointers/references 対応しない: シーケンスコンテナのassignが全イテレータ・参照を無効化する(vector/dequeは終端も)という一般要件の明確化で、各コンテナのassignページは既に無効化を記載
2706 Error reporting for recursive_directory_iterator::pop() is under-specified 完了: pop(error_code&)オーバーロードはpopの宣言に反映済み(参照追記)
2707 path construction and assignment should have string_type&& overloads 完了: string_type&&版のコンストラクタ・代入・assignはpathに反映済み(参照追記)
2710 "Effects: Equivalent to ..." doesn't count "Synchronization:" as determined semantics 対応しない: 「Equivalent to」が同期(Synchronization)セマンティクスも含むという一般的な記述規約の明確化で、個別ページで扱う粒度ではない
2687 {inclusive,exclusive}_scan misspecified 完了: 出力範囲境界のoff-by-one修正はinclusive_scan/exclusive_scanの効果に反映済み(参照追記)
2704 recursive_directory_iterator's members should require '*this is dereferenceable' 完了: *thisがデリファレンス可能である事前条件をoptions/depth/recursion_pending/pop/disable_recursion_pendingに追加(参照はpopに集約)
2711 path is convertible from approximately everything under the sun 完了: EcharT/Sourceの制約はpathコンストラクタに反映済み(参照追記)
2725 filesystem::exists(const path&, error_code&) error reporting 完了
2312 tuple's constructor constraints need to be phrased more precisely 完了: コンストラクタ制約の厳密化はtupleコンストラクタの制約に反映済み(参照追記)
2422 std::numeric_limits<T>::is_moduloの符号あり整数型に対する仕様が間違っている 完了
2709 offsetof is unnecessarily imprecise 完了: 非標準レイアウト型でのoffsetofが「条件付きサポート」となる旨は本文に反映済み(参照追記)
2716 Specification of shuffle and sample disallows lvalue URNGs 完了: 左辺値の乱数生成器を渡せる旨をshuffle/sampleの参照に反映
2718 Parallelism bug in [algorithms.parallel.exec] p2 対応しない: 逐次実行ポリシーで要素アクセス関数が呼び出しスレッドで非インターリーブに実行される、という並列アルゴリズム全般の一般規定の修正で、個別ページで扱う粒度ではない
2719 permissions function should not be noexcept due to narrow contract 完了: perm_options版(3)が非noexceptである点は本文に反映済み(参照追記)
2720 permissions function incorrectly specified for symlinks 完了: シンボリックリンクの扱いはperm_optionsで制御する形に反映済み(参照追記)
2721 remove_all has incorrect post conditions 完了: remove_allに事後条件セクション!exists(symlink_status(p))を新設し、シンボリックリンク自体が削除される旨を効果にも追記
2723 Do directory_iterator and recursive_directory_iterator become the end iterator upon error? 完了: エラー時は終端イテレータと等しくなる旨をdirectory_iteratorコンストラクタの参照に反映
2724 The protected virtual member functions of memory_resource should be private 完了: do_allocate等がprivateである点をmemory_resourceの参照に反映
2726 [recursive_]directory_iterator::increment(error_code&) is underspecified 対応しない: incrementが前置インクリメントと同じ効果である旨の文言明確化でeditorial、観測可能な挙動変更はない
2727 Parallel algorithms with constexpr specifier 対応しない: min_element等の並列オーバーロードからconstexprを除去する修正。cpprefjpの並列オーバーロードにconstexprは付いておらず既に整合
2728 status(p).permissions() and symlink_status(p).permissions() are not specified 完了: 返されるfile_statusに権限が設定される旨をstatus/symlink_statusの参照に反映
2770 tuple_size<const T> specialization breaks decomposition declarations 完了: cv修飾tuple_sizeがSFINAEフレンドリ(valueを持たない)である旨はtuple_sizeの効果・参照に反映済み
2062 Effect contradictions w/o no-throw guarantee of std::function swaps 完了: 非メンバswapnoexceptを追加(functionのswap_free宣言・参照に反映)
2166 Heap property underspecified? 対応しない: ヒープ性質を数式で厳密化する一般規定の明確化で、観測可能な挙動変更はなくcpprefjpの記述粒度では扱わない
2221 nullptrに対する出力ストリーム演算子を追加 完了
2223 shrink_to_fitの効果に、イテレータの有効性を記載する 完了
2261 Are containers required to use their pointer type internally? 対応しない: コンテナが内部でアロケータのpointer型を用いる、という一般コンテナ要件の注記追加で、個別ページで扱う粒度ではない
2394 locale::name specification unclear — what is implementation-defined? 完了: 名前あり→等価ロケール生成/名前なし→"*"、の明確化はlocale::nameの戻り値に反映済み(参照追記)
2458 N3778 and new library deallocation signatures 完了
2460 LWG issue 2408 and value categories 対応しない: common_type/iterator_traitsの値カテゴリ・メンバ規定に関する文言明確化で、cpprefjpの記述粒度では該当箇所がない
2468 Self-move-assignment of library types 対応しない: 自己ムーブ代入に関するMoveAssignable要件の一般規定の明確化で、個別ページで扱う粒度ではない
2475 Allow overwriting of std::basic_string terminator with charT() to allow cleaner interoperation with legacy APIs 完了: pos==size()で返る参照にcharT()を書ける旨はoperator[]の備考に反映済み(参照追記)
2503 multiline option should be added to syntax_option_type 完了
2510 Tag types should not be DefaultConstructible 完了: タグ型の明示的デフォルトコンストラクタは各タグ型ページに反映済み。piecewise_construct_t/allocator_arg_t/nothrow_tに参照追記
2514 Type traits must not be final 対応しない: 標準ライブラリの型は特に規定なき限りfinalでない、という一般要件の明確化で、個別ページで扱う粒度ではない
2519 Iterator operator-= has gratuitous undefined behaviour 対応しない: operator-=に「nの絶対値が表現可能範囲」という事前条件を追加する一般イテレータ要件で、個別ページで扱う粒度ではない
2531 future::get should explicitly state that the shared state is released 完了: 共有状態の解放はfuture::getの効果・事後条件に反映済み(参照追記)
2534 Constrain rvalue stream operators (with normative changes, see below) 完了: 右辺値ストリーム版operator<</operator>>のSFINAE制約をop_ostream_free/op_istream_freeの参照に反映
2536 What should <complex.h> do? 対応しない: <complex.h><ccomplex>をインクルードするかのように振る舞う旨の規定で、cpprefjpの記述粒度では扱わない
2540 unordered_multimap::insert hint iterator 対応しない: 要件表のヒント引数の記号(q→p)の誤記修正でeditorial、観測可能な挙動変更はない
2544 istreambuf_iterator(basic_streambuf<charT, traits>* s) effects unclear when s is 0 完了: sがヌルなら終端イテレータが構築される旨をistreambuf_iteratorコンストラクタの参照に反映
2556 Wide contract for future::share() 完了: future::share()noexceptを追加(宣言)し、例外セクション(投げない・広い契約)を新設
2562 Consistent total ordering of pointers by comparison functors 完了: 比較関数オブジェクトが一貫した全順序を与える旨をless/greater/greater_equal/less_equalの参照に反映
2567 Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits 完了: BaseCharacteristicの規定整理をconjunction/disjunction/negationの参照に反映
2569 conjunction and disjunction requirements are too strict 完了: Bi::valueが実体化される型のみ基底として使用可能であればよい旨をconjunction/disjunctionの参照に反映
2578 Iterator requirements should reference iterator traits 対応しない: イテレータ型がiterator_traitsのネスト型要件を満たすべき、というイテレータ全般の一般要件の明確化で、個別ページで扱う粒度ではない
2584 <regex> ECMAScript IdentityEscape is ambiguous 対応しない: ECMAScript文法のIdentityEscapeの曖昧性を解消する文法規定の明確化で、cpprefjpの記述粒度では該当箇所がない
2589 match_results can't satisfy the requirements of a container 完了: operator==の意味論がコンテナ要件と異なる旨をmatch_resultsの参照に反映
2591 std::function's member template target() should not lead to undefined behaviour 完了: 削除された要件セクション(Tが呼び出し可能型であること)を本文から除去し、C++14までの要件と広い契約化を備考に記載
2598 addressof()が一時オブジェクトに対して動作してしまう 完了
2664 operator/ (and other append) semantics not useful if argument has root 完了: issueが提案した事前条件!p.has_root_name()は最終C++17には入らず、ルート名を持つ場合は置き換えという効果として規定された(本文は既に正しい)。参照注記をその事実に合わせて修正
2672 Should is_empty use error_code in its specification? 完了: error_code版のエラー伝播の明確化をis_emptyの参照に反映
2676 Provide filesystem::path overloads for "File-based streams" 完了: ファイルストリーム系のコンストラクタ・openへのpathオーバーロード追加は各ページに反映済み(basic_fstreamコンストラクタに参照追記)
2678 std::filesystem enum classes overspecified 完了
2679 Inconsistent use of "Effects: Equivalent to" 対応しない: 「Effects: Equivalent to」の一貫した適用に関するeditorialな整理で、観測可能な挙動変更はない
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? 完了: error_conditionに「その他」表を新設しhash特殊化(C++17)を記載(error_codeと対称に)・参照追記
2694 Application of LWG 436 accidentally deleted definition of "facet" 対応しない: 「facet」の定義復元とcv修飾facetの規則という一般規定で、cpprefjpの記述粒度では扱わない
2696 Interaction between make_shared and enable_shared_from_this is underspecified 完了: make_sharedshared_from_thisを有効にする旨は本文に反映済み(参照追記)
2699 Missing restriction in [numeric.requirements] 対応しない: complex/valarrayの要素型に関する意味的等価性の一般要件の明確化で、個別ページで扱う粒度ではない
2712 copy_file(from, to, ...) has a number of unspecified error conditions 完了: エラー条件はcopy_fileの効果に反映済み(参照追記)
2722 equivalent incorrectly specifies throws clause 完了: エラー報告を効果節へ移す整理をequivalentの参照に反映
2729 Missing SFINAE on std::pair::operator= 完了: 代入演算子の要素型代入可能性による制約はpair/tupleop_assignに反映済み(参照追記)
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 完了: absが整数昇格でintを返す旨(追加オーバーロードの対象外)を<cmath>absに反映済み(参照追記)
2736 nullopt_t insufficiently constrained 完了
2738 is_constructiblevoidを適用した場合の仕様が未規定 完了
2739 Issue with time_point non-member subtraction with an unsigned duration 完了: (1)の戻り値をCT(lhs.time_since_epoch() - rhs)に修正(符号なしdurationのオーバーフロー回避)をtime_pointoperator-に反映
2740 constexpr optional<T>::operator-> 完了
2742 Inconsistent string interface taking string_view 完了
2744 any's in_place constructors 完了: in_place_type_t版コンストラクタのSFINAE制約はanyコンストラクタに反映済み(参照追記)
2747 Possibly redundant std::move in [alg.foreach] 対応しない: for_eachの戻り値記述から冗長なstd::moveを除くeditorial整理で、観測可能な挙動変更はない
2748 swappable traits for optionals 完了
2749 swappable traits for variants 完了: swap要件(ムーブ構築可能かつswappable)はvariant::swapに反映済み(参照追記)
2752 Throws: clauses of async and packaged_task are unimplementable 完了: asyncbad_alloc送出可能を追記、packaged_taskは既に反映済み(参照追記)
2754 The in_place constructors and emplace functions added by P0032R3 don't require CopyConstructible 完了: anyin_placeコンストラクタ・emplaceのコピー構築可能要件は制約に反映済み(参照追記)
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 完了: 非const版data()が無効化しない旨はdataの備考に反映済み(参照追記)
2765 Did LWG 1123 go too far? 対応しない: 「プログラム全体に少なくとも1つのios_base::Initがあるかのように振る舞う」要件を削除する規定(フリースタンディング配慮)で、個別ページで扱う粒度ではない
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 完了: ignoreがC++17でconstexprになる点は宣言に反映済み(参照追記)
2777 basic_string_view::copy should use char_traits::copy 完了
2778 basic_string_view is missing constexpr 完了
2260 Missing requirement for Allocator::pointer 対応しない: アロケータ要件表へのpointer_traits<X::pointer>::pointer_toの追加という一般アロケータ要件で、個別ページで扱う粒度ではない
2768 any_cast and move semantics (no changes, resolved by 2769) 完了: any_cast(any&&)のムーブ意味論をany_castの参照に反映(リンク先をlwg2268→lwg2768に修正)
2769 Redundant const in the return type of any_cast(const any&) 完了: 冗長なconst除去・static_cast<ValueType>化をany_castの参照に反映(リンク先をlwg2269→lwg2769に修正)
2781 Contradictory requirements for std::function and std::reference_wrapper 完了: 例外を投げない対象がreference_wrapperの特殊化である旨をfunctionコンストラクタの参照に反映
2782 scoped_allocator_adaptor constructors must be constrained 完了: (2)(5)(6)がis_constructibleで制約化される旨をscoped_allocator_adaptorコンストラクタの参照に反映(本文は要件として既出)
2784 Resolution to LWG 2484 is missing "otherwise, no effects" and is hard to parse 完了: rethrow_if_nestedの効果をポインタ版dynamic_cast+ヌルチェックの形に整理(効果・参照に反映)
2785 quoted should work with basic_string_view 完了
2786 Annex C should mention shared_ptr changes for array support 対応しない: Annex C(互換性)への注記追加で、cpprefjpが扱う粒度ではない(shared_ptr<T[]>unique_ptr変換制約自体は別途反映済み)
2787 [file_status.cons] doesn't match class definition 完了: 非explicitデフォルト+explicit引数付きの形はfile_statusコンストラクタに反映済み(参照追記)
2788 basic_string range mutators unintentionally require a default constructible allocator 対応しない: range版のappend/assign/insert/replaceが内部で作る一時オブジェクトにget_allocator()を使う、という実装内部の仕様修正で、cpprefjpの記述粒度では該当箇所がない
2789 Equivalence of contained objects 対応しない: anyの「等価なオブジェクト」の意味を構築規則で明確化する文言整理で、観測可能な挙動変更はない
2790 Missing specification of istreambuf 完了: istreambuf_iterator::operator->がC++17で削除された旨をメンバ表・op_arrowページ・参照に反映
2794 Missing requirements for allocator pointers 対応しない: アロケータのpointer/const_pointerが隣接イテレータ要件を満たすべき、という一般アロケータ要件の明確化で、個別ページで扱う粒度ではない
2795 [global.functions] provides incorrect example of ADL use 対応しない: 標準ライブラリ関数のADL不使用に関する例・文言の明確化でeditorial、観測可能な挙動変更はない
2796 tuple should be a literal type 完了: 全要素がトリビアルに破棄可能ならtuple/pairのデストラクタもトリビアル(リテラル型)になる旨を参照に反映
2804 Unconditional constexpr default constructor for istream_iterator 完了: デフォルトコンストラクタが無条件constexprである点は宣言に反映済み(参照追記)
2806 Base class of bad_optional_access 完了
2807 std::invoke should use std::is_nothrow_callable 完了: invokenoexcept(is_nothrow_invocable_v<...>)は宣言に反映済み(参照追記)
2824 list::sort should say that the order of elements is unspecified if an exception is thrown 完了: 例外送出時に順序が未規定となる旨をlist::sortの効果に追記(規格もEffects節に規定)・参照追記
2826 string_view iterators use old wording 完了
2834 Resolution to LWG 2223 is missing wording about end iterators 完了: shrink_to_fitが終端イテレータも無効化する旨をstring/vector/dequeの参照に反映
2835 Resolution to LWG 2536 seems to misspecify <tgmath.h> 対応しない: <tgmath.h>の規定の字句修正でeditorial、観測可能な挙動変更はない(旧リンクlwg2836は別issueを指す誤りだったため2835に修正)
2837 gcd and lcm should support a wider range of input values 完了
2838 is_literal_type specification needs a little cleanup 完了: 利用者による特殊化禁止の復元などをis_literal_typeの参照に反映
2842 in_place_t check for optional::optional(U&&) should decay U 完了
2850 std::function move constructor does unnecessary work 完了: ムーブコンストラクタの効果緩和(所有権移動の最適化許容)をfunctionコンストラクタの参照に反映
2853 Possible inconsistency in specification of erase in [vector.modifiers] 完了: vector::eraseの例外規定(コンストラクタ言及なし)を備考から例外セクションへ移し、計算量の「ムーブ代入演算子」を規格通り「代入演算子」に修正
2855 std::throw_with_nested("string_literal") 完了: 判定にdecay_tを用い文字列リテラル等を渡せる旨はthrow_with_nestedの効果に反映済み(参照追記)
2866 Incorrect derived classes constraints 対応しない: 規格自身の派生クラス記述規約[derivation]の文言明確化で、cpprefjpが扱う粒度ではない
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" 対応しない: 規格用語「direct-non-list-initialization」の定義追加でeditorial、観測可能な挙動変更はない
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 完了: value_type = traits::char_type(charTと同一)である旨はメンバ型に反映済み(参照追記)
2873 shared_ptrの所有権ベース比較の関数にnoexceptを追加 完了
2874 Constructor shared_ptr::shared_ptr(Y*) should be constrained 完了: ポインタ版コンストラクタの制約はshared_ptrコンストラクタの適格要件に反映済み(参照追記)
2875 shared_ptr::shared_ptr(Y* | D | […]) constructors should be constrained 完了: 削除子付きコンストラクタの制約はshared_ptrコンストラクタに反映済み(参照追記)
2878 Missing DefaultConstructible requirement for istream_iterator default constructor 完了: 型TのDefaultConstructible等の要件をistream_iteratorの要件・参照に追記
2802 shared_ptr constructor requirements for a deleter 完了: 削除子の構築/ムーブ構築が例外を投げないこと等の整理をshared_ptrコンストラクタの参照に反映
2876 shared_ptr::shared_ptr(const weak_ptr<Y>&) constructor should be constrained 完了: weak_ptr版(12)の制約はshared_ptrコンストラクタに反映済み(参照追記)
2900 The copy and move constructors of optional are not constexpr 完了: コピー/ムーブコンストラクタのconstexpr化はoptionalコンストラクタに反映済み(参照追記)
2903 The form of initialization for the emplace-constructors is not specified 完了: variantemplaceがdirect-non-list-initializationで初期化する旨を参照に反映(効果は既出)
2904 Make variant move-assignment more exception safe 完了: is_nothrow系に基づくemplace化はvariantの代入演算子の効果に反映済み(参照追記)
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 完了: less<>を用いる形はshared_ptroperator<の戻り値に反映済み(参照追記)
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 完了: 計算量を「2N log(N)回」に修正(DR、C++17へ遡及)をsort_heapに反映
2593 Moved-from state of Allocators 対応しない: アロケータのムーブ構築後に等値性が保たれる(uが元のaと等しい)という一般アロケータ要件の明確化で、個別ページで扱う粒度ではない
2597 std::log misspecified for complex numbers 完了: 分岐切断上の意味論をCのclogに委ねる旨(DR、C++17へ遡及)をcomplexlog/sqrtの参照に反映
2783 stack::emplace() and queue::emplace() should return decltype(auto) 完了: 戻り値型decltype(auto)stack/queueemplaceに反映済み(備考・参照とも既出)
2932 Constraints on parallel algorithm implementations are underspecified 対応しない: 並列アルゴリズム実装が要素アクセス関数で変更したオブジェクトへ非同期アクセスしない、という一般規定で、個別ページで扱う粒度ではない
2937 Is equivalent("existing_thing", "not_existing_thing") an error? 完了: いずれか一方でも存在しない場合はエラー、とequivalentの効果・例外・参照に反映
2940 result_of specification also needs a little cleanup 完了: 利用者による特殊化禁止の復元をresult_ofの参照に反映
2942 LWG 2873's resolution missed weak_ptr::owner_before 完了: weak_ptr::owner_beforenoexceptは宣言に反映済み(参照追記)
2954 Specialization of the convenience variable templates should be prohibited 対応しない: すべての標準ライブラリ変数テンプレート(_v)の特殊化を禁止する一般規定で、個別ページで扱う粒度ではない
2961 Bad postcondition for set_default_resource 完了
2966 Incomplete resolution of US 74 対応しない: filesystemのnativeフォーマット観測関数の戻り値文言をnative()に統一するeditorial、観測可能な挙動変更はない
2974 Diagnose out of bounds tuple_element / variant_alternative 完了: 範囲外インデックスで不適格(診断必須)となる旨をpairtuple_elementvariant_alternativeの参照に反映
2901 variants cannot properly support allocators 完了: 最終C++17ではvariantにアロケータ対応が無いため、variant.mdの「アロケータインタフェース」節(uses_allocator特殊化)を削除し参照追記
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 完了: polarthetaのデフォルト引数を0からT()に修正(宣言・備考・参照に反映)
2935 What should create_directories do when p already exists but is not a directory? 完了: 既存ディレクトリで作成失敗をエラーとしない旨をcreate_directory/create_directoriesの参照に反映
2941 [thread.req.timing] wording should apply to both member and namespace-level functions 対応しない: _for/_untilのタイミング要件をメンバ関数と名前空間スコープ関数の両方に適用する文言明確化でeditorial、観測可能な挙動変更はない
2944 LWG 2905 accidentally removed requirement that construction of the deleter doesn't throw an exception 完了: デリータ構築の非throw要件はunique_ptrコンストラクタの制約に反映済み(参照追記)
2945 Order of template parameters in optional comparisons 対応しない: optional比較演算子のテンプレートパラメータ宣言順の整理で、観測可能な挙動変更はない
2948 unique_ptr does not define operator<< for stream output 完了: unique_ptroperator<<(C++17)はページに反映済み(参照も既出)
2950 std::byte operations are misspecified 完了
2953 LWG 2853 should apply to deque::erase too 完了: deque::eraseに例外セクションを新設(Tの代入演算子のみ・コンストラクタは呼ばれない)。あわせて戻り値に紛れていた代入演算子の記述を計算量へ移し規格通り(前後の要素数の少ない方以下)に修正
2964 Apparently redundant requirement for dynamic_pointer_cast 完了: dynamic_castが適格でwell-definedである要件への整理をdynamic_pointer_castの参照に反映
2965 Non-existing path::native_string() in filesystem_error::what() specification 完了
2972 What is is_trivially_destructible_v<int>? 完了: remove_all_extents_tを用いる条件への整理(intでtrue)をis_trivially_destructibleの参照に反映
2976 Dangling uses_allocator specialization for packaged_task 完了: uses_allocator<packaged_task>特殊化がC++17で削除された旨を該当ページ・packaged_taskメンバ表・参照に反映
2977 unordered_meow::merge() has incorrect Throws: clause 完了: mergeは「ハッシュ関数・キー等価述語以外は投げない」という誤った例外指定が削除されたのが実際の解決。4ページ(map/multimap/set/multiset)に例外セクションを新設し、multimap/multisetにも参照を追記
2978 Hash support for pmr::string and friends 対応しない: pmr::string等に対するhash特殊化の追加。cpprefjpのhashページは<string>の特殊化として包括的に扱い、pmr版typedefを個別列挙しない方針
2979 aligned_union should require complete object types 完了
2980 Cannot compare_exchange empty pointers 対応しない: atomicなshared_ptrの等価性定義に「空ポインタ同士」を含める明確化で、cpprefjpの記述粒度では該当箇所がない
2981 Remove redundant deduction guides from standard library 対応しない: コア言語のコピー推論候補と重複する冗長な推論補助(reference_wrapper/lock_guard等)の削除で、観測可能な挙動変更はない
2982 Making size_type consistent in associative container deduction guides 対応しない: 非順序連想コンテナの推論補助におけるsize_typeの解釈統一で、cpprefjpの記述粒度では該当箇所がなく観測可能な影響も稀
2988 Clause 32 cleanup missed one typename 対応しない: atomic_exchangeシグネチャへのtypename補完でeditorial、観測可能な挙動変更はない
2993 reference_wrapper<T> conversion from T&& 完了
2998 Requirements on function objects passed to {forward_,}list-specific algorithms 対応しない: list/forward_listのアルゴリズム系メンバに渡す関数オブジェクトが[algorithms.requirements]の要件を満たすべき、という一般要件の明確化で、個別ページで扱う粒度ではない
3001 weak_ptr::element_type needs remove_extent_t 完了: element_typeremove_extent_t<T>となる旨をweak_ptrのメンバ型・参照に反映
3024 variant's copies must be deleted instead of disabled via SFINAE 完了: コピーがSFINAE除外ではなくdelete定義される旨をvariantコンストラクタの参照に反映
2958 Moves improperly defined as deleted 完了: pair/tupleのムーブ代入がdeleteではなくオーバーロード解決不参加へ修正された旨をop_assignの参照に反映

Clone this wiki locally