-
Notifications
You must be signed in to change notification settings - Fork 157
cpp17
onihusube edited this page Oct 8, 2019
·
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 class es 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 optional s |
完了 |
2749 | swappable traits for variant s |
|
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 Allocator s |
|
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 |
variant s 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 |