C++14標準ライブラリの小さな変更 その5

その1その2その3その4に引き続き、C++14の標準ライブラリに入った小さな変更を紹介していきます。

error_categoryにデフォルトコンストラクタを追加

std::error_categoryクラスのコンストラクタに、デフォルトコンストラクタを追加しました。

constexpr error_category() noexcept;            // (1) C++14
error_category(const error_category&) = delete; // (2)

単なる記載忘れです。

future/shared_futureの時間指定待機に、例外の仕様を追加

時計クラス、time_pointクラス、durationクラスの構築が例外を送出する場合、
この関数はそれらの例外を送出する。

promise::set_value_thread_at_exitに、例外の仕様を追加

std::promise::set_value_at_thread_exit()メンバ関数の以下のバージョンに、例外の仕様が追加されました。

void promise::set_value_at_thread_exit(const R& r);

R型のオブジェクトをコピーするために選択されたコンストラクタが、
あらゆる例外を送出する可能性がある
void promise::set_value_at_thread_exit(R&& r);

R型のオブジェクトをムーブするために選択されたコンストラクタが、
あらゆる例外を送出する可能性がある

durationのコンストラクタに、オーバーロード解決される条件を追加

単位変換のコンストラクタに、「単位変換の結果としてオーバーフローするような場合、オーバーロード解決から除外される」という条件が追加されました。

template <class Rep2, class Period2>
constexpr duration(const duration<Rep2, Period2>& d);

この関数は、以下の条件を満たす場合にオーバーロード解決される。
・C++11 : treat_as_floating_point<rep>::value == true
・C++14 : 単位変換の結果としてオーバーフローせず、treat_as_floating_point<rep>::value == true
・もしくは、treat_as_floating_point<rep>::value == falseかつratio_divide<Period2, period>::type::den == 1
・これらの要求は、整数ベースのduration型間での変換の際に、暗黙に切り捨て誤差が起きるのを防ぐ。
浮動小数点数型ベースの場合には、精度が下がれば小数点以下の数値になるだけなので問題ない。

seed_seqクラスのメンバ関数に、例外の仕様を追加

std::seed_seq::generate()メンバ関数に、例外の仕様が追加されました:

RandomAccessIterator要件のオブジェクトbegin、endへの操作が、例外を投げる可能性がある

param()メンバ関数に、例外の仕様が追加されました:

OutputIterator要件のオブジェクトdestへの操作が、例外を投げる可能性がある

デフォルトコンストラクタに、例外を投げない規定が追加されました。

size()メンバ関数に、例外を投げない規定が追加されました。

今日はここまで

もう少し続きます。