cpprefjpのSEO関係の対応をしてたり、cpprefjpの数式をMathJaxに対応してたり、Boost 1.58.0のリリースノート翻訳をやっていたりしたので、こちらが滞っていました。
その1、その2、その3に引き続き、C++14の標準ライブラリに入った小さな変更を紹介していきます。
atomic_flag::clearの要件追加
std::atomic_flag
クラスのclear()
メンバ関数に渡すメモリオーダーに、「memory_order_consume
を指定してはならない」という要件が追加されました。
orderが以下のメモリオーダーではないこと: ・memory_order_consume (C++14) ・memory_order_acquire ・memory_order_acq_rel
deque::resizeとvector::resizeの内部的な挙動変更
C++11まで、std::deque::resize()
の挙動は、以下のようなものでした:
if (sz > size()) insert(end(), sz - size(), c); else if (sz < size()) erase(begin() + sz, end());
C++14からは、以下のようになりました:
・もしszが現在のコンテナのsize()より小さい場合、pop_back()関数をsize() - sz回呼ぶ ・もしszが現在のコンテナのsize()より大きい場合、sz -size()個だけオブジェクトcのコピーを追加する。
要件も少し緩くなっています。
この変更は、std::vector::resize()
に対しても行われています。
deque::shrink_to_fitに要件と計算量の規定を追加
C++11から追加されたstd::deque::shrink_to_fit()
メンバ関数に、以下の要件:
型Tが*thisに対してムーブ挿入可能であること
および、計算量の規定が追加されました。
最大で、要素数に対して線形時間
vector::reserveに要件を追加
deque
のshrink_to_fit()
と同様の要件が、std::vector::reserve()
に追加されました。
型Tが*thisに対してムーブ挿入可能であること
vector::shrink_to_fitに要件と計算量の規定、例外が送出された際の挙動を追加
deque
のshrink_to_fit()
で追加された要件と計算量の規定に加え、vector::shrink_to_fit()
に、例外が送出された際の挙動が追加されました。
非コピー挿入可能な型Tのムーブコンストラクタが例外を送出した場合、 この関数は何もしない。
今日はこれまで
まだまだ続きます。