N3672 A proposal to add a utility class to represent optional objects (Revision 4)
optional
がC++14に入ることが決まりました。
boost::optional
ベースで、細かいところが変わってます。変更点は、上記paperかこのブログの履歴を追ってもらうとして、Revision 4ではoperator==()
とoperator<()
以外の比較演算子が削除されています。
これは、それ以外の演算子の動作について合意がとれなかったのと、これらの演算子が、コンテナにoptional
を入れることのみを目的にしているからだそうです。
std-proposalsでいまsatodaさんが「せめてoperator!=()
はほしい」という意見を出して議論しています。
optional Rev.4 (N3672): What was the rationale to remove !=, >=, ...
Fixing Standard Library relational operators
Boost MLで「optional
がC++14に入るよー」と作者が報告してるので、おめでとうはこちらへ:
std::optional<T> - boost.devel