最近cpprefjpに書いたものを列挙します。
assert
マクロがconstexpr関数内で使用できるようになったstd::next()
関数のイテレータ要件がForward IteratorからInput Iteratorに緩和されたstd::addressof()
がconst T&&
の引数を禁止にした。addressof<const T>(T())
のようにするとconst T&&
が指定できていたstd::addressof()
がconstexprに対応したstd::mutex
とかstd::recursive_mutex
のlock()
メンバ関数が、device_or_resource_busy
のエラーを起こらなくした- 非順序連想コンテナの
reserve()
メンバ関数が、C++14までn-1以上の予約していたが、C++17からn以上が予約されるようになった std::shared_ptr<const void>
のようなテンプレート引数に対して間接参照演算子が適用できるようになった- タプルの
std::get()
関数に、const T&&
版を追加。const付きで戻り値を返すと、その一時オブジェクトはconst T&&
になっていたため std::atomic
クラスのテンプレート引数設定済みの別名として、atomic_uint8_t
のような固定幅整数型を追加std::atomic
クラスにvalue_type
とdifference_type
を追加。fetch
系の関数がT
ではなくdifference_type
を受け取るよう変更されたstd::numeric_limits::is_modulo
の符号あり整数型に対する仕様が変更された。これまでは符号あり整数型がオーバーフローしたときの未定義動作としての最小値に戻る挙動をtrue
として扱っていたのをやめた。規格上は符号あり整数型はfalse
で、処理系がオーバーフローしたときの動作をラップして最小値に戻る挙動として定義したときにtrue
となるようにしたstd::vector
とstd::deque
とstd::basic_string
のshrink_to_fit()
メンバ関数で、メモリを縮小して再割り当てが発生するときに、イテレータの無効化が起こることが明記された。明記されただけで、元々起こっていただろうstd::basic_string
のコンストラクタに、basic_string(const basic_string& str, size_type pos, const Allocator& a = Allocator());
のオーバーロードを追加