Skip to content
E Kawashima edited this page Mar 26, 2017 · 218 revisions

C++14の対応状況

本Webサイトが提供する、ライブラリリファレンスの、C++14への対応状況です。

以下のページを参考に、対応状況の表を作りました。

大きな機能追加・変更

提案文書 説明 対応状況(空 or 完了 or 対応しない)
N3421 比較関数オブジェクトのジェネリック化 完了
N3462 result_ofをSFINAEフレンドリーに 完了
N3469 chronoconstexpr対応 完了
N3470 arrayconstexpr対応 完了
N3471 ユーティリティのconstexpr対応(ムーブ関係、pairtupleinitializer_listが対象) 完了
N3302 complexconstexpr対応 完了
N3545 integral_constantを改善し、関数呼び出し演算子を追加 完了
N3644 Null Forward Iterators 対応しない
現状、イテレータの要件を書く場所がない
N3668 std::exchange() 完了
N3658 コンパイル時の整数シーケンス 完了
N3670 型を指定して、タプルの要素を取得する 完了
N3671 2つのシーケンス範囲を扱うアルゴリズムに、
last2を受け取るオーバーロードを追加
完了
N3656 make_unique 完了
N3654 文字列のクォート修飾 完了
N3642 basic_stringdurationのリテラル 完了
N3655 Type Traitsのエイリアステンプレート版を追加 (part 4以外) 完了
N3657 連想コンテナに、異種混合の比較を追加する 完了
N3669 constexprメンバ関数にconst修飾を
付けられるようになったので、
標準ライブラリに適用
完了
N3659 共有ロック機能として、<shared_mutex>ヘッダを追加 完了
N3779 std::complexのユーザー定義リテラル 完了
N3789 <functional>ライブラリにconstexprを追加 完了
N3778 サイズ付きのデアロケート 完了
N3924 rand()の非推奨化 完了
N3887 tuple_elementのエイリアステンプレート対応 完了
N3891 shared_mutexクラスをshared_timed_mutexに改名 完了

小さな変更

LWG DR 説明 対応状況(空 or 完了 or 対応しない)
1214 キーの不変性に関する連想コンテナの要件が
不足している & 一貫していない
対応しない
文面整理のため、こちらのサイトに影響がない
2009 数値-文字列間の変換での、範囲外の値が発生した
エラー報告に、ERANGEを考慮する
完了
2010 is_bind_expressionis_placeholder
特殊化できないように読める
完了
2015 いくつかの型特性の要件が間違っている 完了
2021 result_ofの使い方が間違っている 完了
bind側はとくに対応していない
2028 messages_base::catalog overspecified
2033 reserve()shrink_to_fit()
resize()メンバ関数の事前条件
完了
2039 std::reverseの効果が間違っている。
std::copy_ifに戻り値の仕様がない。
完了
2044 copy関係のアルゴリズムについて、
「Stable」の定義がない
対応しない
2045 forward_listmerge()splice_after()に、
アロケータが等価であることの要件を追加
完了
2047 unique_ptrのムーブ代入演算子の、効果が間違っている 完了
2050 非順序連想コンテナがデータメンバ型の定義に
allocator_traitsを使用していない
完了
2053 regex_constantsのビットマスク定数に、
不要なstaticが付いている
完了
2061 make_move_iterator()関数に配列を渡すと、
ポインタに推論されない問題
完了
2064 basic_stringnoexcept仕様に問題あり 完了
2065 アロケータインタフェースの最小要件 対応しない
現状、アロケータの要件を書く場所がない
2067 packaged_taskbasic_ostream
コピー不可指定が間違っている
packaged_taskは完了
2069 basic_stringのムーブコンストラクタについて、
例外の仕様が不整合を起こしている
完了
2096 future::getの制約が不正 完了
2102 std::launchが「実装定義のビットマスク型」という
仕様になっているが、実装定義である必要はない
完了
2071 std::valarrayのムーブ代入について、計算量が
定数時間と記載していたが、線形時間の間違い
完了
2074 std::reverse_copyの効果が間違っている 完了
2081 Allocator要件は、CopyConstructible要件をincludeすべき 対応しない
現状、アロケータの要件を書く場所がない
2083 weak_ptr::owner_before()const修飾 対応しない(ぎりぎりC++11から)
2086 Overly generic type support for math functions 完了
ヘッダページに記載
2099 va_start()の用途に、不要な制約がある 対応しない
C互換ライブラリの対応は任意
2103 propagate_on_container_move_assignment
デフォルトでtrue
完了
2105 const_iteratorvalue_typeに、不要な要件。 対応しない
現状、イテレータの要件を書く場所がない
2110 removeremove_ifは、アルゴリズムの要件に
反するswap操作はできない
完了
2123 forward_list::merge()のアロケータ要件を
満たさなかった場合の挙動を、listに合わせて記載
完了
2005 unordered_map::insert(T&&)の効果を、mapと同様に簡易化 完了
2011 Unexpected output required of strings
2048 mem_fnの不要なオーバーロードを削除 完了
2049 is_destructibleの仕様が不十分 完了
2056 future_errcの列挙値が0から始まってしまっている 完了
2058 valarrayのイテレータが無効になる条件 完了
2091 m.try_lock_for()の要件に、効果が書いていた 完了
2092 condition_variable_anyのエラー文言があいまい 完了
2093 wait系関数の「例外」節を見直し 完了
2094 durationの変換コンストラクタのオーバーロード解決条件に、
オーバーフローしないことを追加
完了
2122 listforward_listにおけるmerge()の安定性 完了
安定の定義については未対応
2128 イテレータを取得する非メンバ関数として、
cbegin/cend, rbegin/rend, crbegin/crendを追加
完了
2145 error_categoryクラスのデフォルトコンストラクタが定義されていない 完了
2147 Unclear hint type in Allocator's allocate function
2148 std::hashenumを直接サポートするべき 完了
2149 関数オブジェクトに、argument_typeresult_typeを要求していたが、
持っていないものも多いため、要件から外した
対応しない
2162 allocator_traits::max_size()noexceptが付いていない 完了
2163 nth_elementの事後状態に、operator>ではなく
operator<を使用する
完了
2169 unique_ptr::reset()nullptr_tバージョンに、効果が記載されていない 完了
2172 shared_ptratomic_compare_exchange_*関数に、
ヌルポインタを受け付けない要件が漏れている
完了
2080 once_flagは無効にならない 完了
2098 promise::set_value()set_value_at_thread_exit()
例外節を見直し
完了
2109 hash特殊化の要件が間違っている 対応しない
元々、要件については特に書いていなかった
2130 missing ordering constraints for fences
2138 atomic_flag::clearの制限として、
consumeメモリオーダーを受け付けないようにする
完了
2140 notify_all_at_thread_exit synchronization
2144 type_indexの仕様にnoexceptが抜けている 完了
2174 wstring_convert::converted()noexceptにすべき 完了
2175 wstring_convertwbuffer_convertのコンストラクタ要件 wstring_convertは完了
2176 wstring_convertwbuffer_convertの特殊メンバ関数 wstring_convertは完了
2177 Requirements on Copy/MoveInsertable
2185 futureshared_futurewait_for/wait_untilに、
例外仕様が漏れている
完了
2187 vector<bool>emplaceemplace_backが追加されていない 完了
2190 ordering of condition variable operations, reflects Posix discussion
2196 is_*[copy/move]_[constructible/assignable]
非参照型に対する振る舞いを明確化
完了
2197 is_[un]signedの算術型以外が渡された場合の仕様が明確でない 完了
2200 Container requirementsの「データ競合の回避」のところに
「シーケンスコンテナ」と書いてあるが、正しい対象は全てのコンテナ
対応しない
cpprefjpに影響なし
2203 scoped_allocator_adaptor uses wrong argument types for piecewise construction
2207 basic_string::atには要件節が必要ない 完了
2209 assign() overspecified for sequence containers
2210 コンテナに、アロケータを伝搬させるコンストラクタが不足している 完了
2211 Replace ambiguous use of "Allocator" in container requirements
2222 forward_listの単一要素版splice_after()について、
ポインタと参照の有効性を説明する対象が間違っている
完了
2225 ヘッダのインクルードチェックに関する要件が現実的ではない 対応しない
2229 Standard code conversion facets underspecified
2231 DR 704で削除された、シーケンスコンテナの
clear()メンバ関数の計算量保証を再度入れる
完了
2235 basic_stringのコンストラクタに、
適切な要件を設定して未定義動作をなくす
完了
2141 common_typeは参照型を返すべきではない 完了
2246 unique_ptrのデリータを代入する文言が曖昧 完了
2247 is_null_pointer型特性を追加 完了
2085 Wrong description of effect 1 of basic_istream::ignore
2087 iostream_category()noexcept 完了
2143 ios_base::xallocはスレッドセーフにすべき 完了
2150 find_endの仕様が明確でない 対応しない
cpprefjpの解説には影響がなかった
2180 std::seed_seqオブジェクトの操作から投げられる例外 完了
2194 コンテナアダプタが「シーケンスコンテナの要件を満たす」とあるが、そんなことはないので間違い 対応しない
cpprefjpに影響なし
2013 Do library implementers have the freedom to add constexpr?
2018 regex_traits::isctypeの戻り値節がおかしい 完了
2078 async()の例外節が不完全 対応しない
意味はとくに変わっていない
2097 threadpackaged_taskの関数テンプレート版コンストラクタに
制約を設けるべき
完了
2100 Timed waiting functions cannot timeout if launch::async policy used 対応しない
現状、同期節を取り扱っていない
2120 async()関数にasyncdeferred以外の
ポリシーが設定されていたら、どういう挙動をすべきか
完了
2159 atomic_flagの初期化 完了
2275 forward_as_tuple()constexprになっていない 完了
2284 allocator_traits::max_sizeのパラメータにconstが付いていない 完了
2298 add_rvalue_referenceのコード例に、noexceptを追加
std::declval()と同じ定義であるため
対応しない
2300 mapmultimapのメンバ関数の節を削減 対応しない
規格書の書き方整理
NB comment: GB9 Remove gets from C++14
2135 condition_variable::wait()の例外送出する仕様が明確でない 完了
2291 std::hashが衝突DoS攻撃に対して脆弱である 完了
2142 packaged_task::operator() synchronization too broad?
2240 Probable misuse of term "function scope" in [thread.condition]
2252 vectordequeの挿入操作において、例外に対する保証が強すぎる 完了
2257 コンテナの等値比較を、新たなアルゴリズムを使ってシンプルにする 完了
非順序連想コンテナは非対応。
2268 std::basic_stringappend, assign,
insert, replace, compareに、デフォルト引数を追加
完了
2271 regex_traits::lookup_classname specification unclear
2272 quotedは文字の比較にchar_traits::eqを使用すべき 完了
2278 durationのリテラルを、std::chrono名前空間でも
使用できるようにする
完了
2280 組み込み配列版のbegin()end()
constexprnoexceptを付けるべき
完了
2285 make_reverse_iterator()関数を追加 完了
2299 key_compare::is_transparent型へのアクセスに
ついての効果が明確ではない
完了
1450 regex_constantsの矛盾 対応しない
cpprefjpには、とくに影響がなかった
2003 basic_string::eraseの、例外仕様が矛盾している 完了
2112 派生できないユーザー定義クラスの判定用に、is_finalを追加 完了
2132 std::functionに、シグニチャが異なる
関数オブジェクトが渡された場合の挙動があいまい
完了
2182 Container::[const_]reference types are misleadingly specified
2188 reverse_iteratorを、operator&のオーバーロードに対応する 完了
2193 コンテナのデフォルトコンストラクタを非explicitにする 完了
2205 regex_match/regex_search の事後条件の表の表記は問題がある 完了
2213 regex_replace の戻り値は引数のコピーではない 完了
2258 順序付き連想コンテナのa.erase(q1, q2)が、
q2を直接返せない場合がある
完了
2263 Comparing iterators and allocator pointers with different const-character
2293 Wrong facet used by num_put::do_put
2301 std::tie()constexprになっていない 完了
2304 非順序連想コンテナのcount()メンバ関数について、
計算量が間違っている
完了
2306 match_results::referenceconst value_type&になっているが、
value_type&が正しい
完了
2308 コンテナのデストラクタの要件を、
動的メモリ確保しないstd::arrayを考慮したものにする
対応しない
2313 tuple_sizeは常にintegral_constantから派生すべき 完了
2314 apply()decltype(auto)を返し、
tuple_sizeの前にdecay_tを使うべき
対応しない
規格書中のサンプルコードの問題
2315 weak_ptrをムーブ可能にすべき 完了
2316 weak_ptr::lock()をアトミックに 完了
2317 型のクエリに関する特性クラスは、
size_tを返すUnaryTypeTraitsであるべき
対応しない
2320 select_on_container_copy_construction()によって
返されるアロケータオブジェクトを、コンテナのコピーコンストラクタの第1パラメータに使用する、
と書かれていたが、アロケータのパラメータ位置は任意なので間違い
対応しない
2322 Associative(initializer_list, stuff)
コンストラクタ仕様が不十分
完了
2323 vector::resize(n, t)deque::resize(n, t)
仕様を簡易化すべし
完了
2324 挿入イテレータのコンストラクタは、ポインタ取得にaddressof()関数を使用すべき 完了
2329 match_results を伴う regex_match()/regex_search() は一時stringオブジェクトを禁止すべし 完了
2330 regex("meow", regex::icase) のような文法指定が無いものは禁止されてるが、許可すべきだ 完了
2332 regex_iteratorregex_token_iteratorは、一時regexオブジェクトを禁止すべし 完了
2339 Wording issue in nth_element
2341 Inconsistency between basic_ostream::seekp(pos) and basic_ostream::seekp(off, dir)
2344 quoted()が、パディングとの相互作用について不明確 完了
2346 integral_constantのメンバ関数に、noexcept指定を付けるべき 完了
2350 minmaxminmaxconstexpr 完了
2356 Stability of erasure in unordered associative containers
2357 Remaining "Assignable" requirement
2359 regex_constants::nosubsbasic_regex::mark_count() にどのような影響を与えるのか?
2360 reverse_iteratorの間接参照演算子が、
データ競合を考慮していない
完了
2104 unique_lockのムーブ代入演算子からnoexceptを外すべき 完了
2186 Incomplete action on async/launch::deferred
2075 進行保証、ロックフリーのプロパティ、仮定のスケジューリング 対応なし(ロックフリーという言葉の定義を追加)
2288 shared mutexの要件に不整合 完了
2396 underlying_typeに完全型であることの要件が明記された 完了
Clone this wiki locally