その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の時間指定待機に、例外の仕様を追加
std::future::wait_for()
std::future::wait_until()
std::shared_future::wait_for
std::shared_future::wait_until
時計クラス、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への操作が、例外を投げる可能性がある
OutputIterator要件のオブジェクトdestへの操作が、例外を投げる可能性がある
デフォルトコンストラクタに、例外を投げない規定が追加されました。
size()
メンバ関数に、例外を投げない規定が追加されました。
今日はここまで
もう少し続きます。