-
Couldn't load subscription status.
- Fork 172
cpp17
onihusube edited this page Mar 23, 2020
·
226 revisions
- C++17の新機能予定, 2014年11月
-
C++17 progress update! (Oct 2015)
- MicrosoftのStephan T. Lavavejによる投稿
- What we added to the C++17 working draft
- C++ Defect Report Support in Clang
- libc++ C++1z Status
- cplusplus/draftリポジトリのコミットログ
- What the ISO C++ committee added to the C++17 working draft at the Oulu 2016 meeting
- What are the new features in C++17? - StackOverflow
- Trip Report: C++ Standards Meeting in Issaquah, November 2016 - There's Waldo!
- C++1zの言語拡張まとめ - Faith and Brave - C++で遊ぼう
- C++17 is formally approved - Sutter's Mill
- N4297 Editor's Report -- Working Draft, Standard for Programming Language C++
- N4432 Editor's Report -- Working Draft, Standard for Programming Language C++
- N4583 Editor's Report -- Working Draft, Standard for Programming Language C++
- N4593 Editor's Report -- Working Draft, Standard for Programming Language C++
- N4603 Editor's Report -- Committee Draft, Standard for Programming Language C++
- N4619 Editors' Report -- Working Draft, Standard for Programming Language C++
- N4661 Editors' Report -- Programming Languages -- C++
- N4688 Editor's Report
- N4714 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 |
pairとtupleを改善 |
完了 |
| N4389 | bool_constant |
完了 |
| N4508 | shared_mutex |
完了 |
| N4366 |
unique_ptrのテンプレート代入演算子にSFINAEルールが不足していたので追加 |
完了 |
| N4510 | 標準コンテナに不完全型の最小サポートを追加 | 完了 |
| P0004R1 | 非推奨だったiostreamsのエイリアスを削除 | |
| P0006R0 | 値を返す型特性クラスのconstexpr変数テンプレート版 |
完了 |
| P0092R1 |
<chrono>のdurationとtime_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の非const版data()メンバ関数 |
完了 |
| P0077R2 |
is_callableとis_nothrow_callable
|
完了 |
| P0063R3 | Cの参照をC99からC11に変更 | 完了 |
| P0175R1 | C互換ライブラリの概要を記載する | 完了 |
| P0088R3 | variant |
完了 |
| P0307R2 |
optionalの>=比較 |
完了 |
| P0393R3 |
variantの>=比較 |
完了 |
| P0032R3 |
variantとanyとoptionalを一様のインタフェースにする |
完了 |
| 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_traitsのconstexpr対応 |
完了 |
| 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
|
完了 |
| 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 |
| 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_iteratorとostream_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_constructibleにvoidを適用した場合の仕様が未規定 |
完了 |
| 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 |