Skip to content
Akira Takahashi edited this page Jul 27, 2015 · 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&&) protection should apply to map too
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/cendrbegin/rendcrbegin/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() should be noexcept
2175 string_convert and wbuffer_convert validity
2176 Special members for wstring_convert and wbuffer_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 Returns clause is wrong
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::operator*() is unimplementable
2104 unique_lockのムーブ代入演算子からnoexceptを外すべき 完了
2186 Incomplete action on async/launch::deferred
2075 進行保証、ロックフリーのプロパティ、仮定のスケジューリング 対応なし(ロックフリーという言葉の定義を追加)
2288 shared mutexの要件に不整合 完了
Clone this wiki locally