C++0x 標準ライブラリのconstexpr対応
C++0xのconstexprは、コンストラクタやその他のメンバ関数にも指定することができます。
これがあると、
constexpr pair<int, int> p(1, 2);
のようにconstexprを付けて定義した変数をコンパイル時定数として扱うことができ、
pairのoperator+がconstexprだったりすると
constexpr pair<int, int> r = p1 + p2;
も定数式になります。
このような対応を、C++0xの標準ライブラリでも行おうという提案が出ていて、
現時点ではいくつかのクラスのデフォルトコンストラクタのみ対応することが決まっています。
pair tuple unique_ptr shared_ptr weak_ptr enable_shared_from_this mutex istream_iterator istreambuf_iterator duration
スマートポインタのデフォルトコンストラクタがconstexprになると
スマートポインタのヌルポインタをコンパイル時定数として扱えるようになります。
(今のところ何に使うかはわからないですが)
また、以下のライブラリはcostexprでの演算もサポートするべきですが、
こちらはコア言語側の仕様が固まったら対応するそうです。
pair tuple duration
(durationはN3000時点ですでにかなり対応されてますが、おそらく間違い)
修正&追記:
auto_ptrはdeprecated(互換性のために残されているが非推奨)扱いなので
constexpr対応はしません。
N2994 constexpr in the library: take 2