ああそうかoptional<const T>を使えばmutableはほぼ完全に駆逐できるのか [宮崎産を食べよう]
2010-06-03 09:16:32@nyaocat 実質的に「任意タイミングで構築/破棄できるオブジェクト」なのですよね。あまりメジャーじゃないみたいですが
2010-06-03 09:16:36Boost.Optional に、 dispose() とか分かりやすい名前の破棄関数を用意すればよかったのに、と思わなくも無い。
2010-06-03 09:17:47欲しいのはmutableじゃなくてdelayed constructionとかsaved resultだもんな [宮崎産を食べよう]
2010-06-03 09:17:53C++で Rebindable!(T) を例外安全に作ろうとすると、 optional<T const> になります。
2010-06-03 09:20:02確かboost::optional<T>はrebindを例外安全にするためにとんでもなくキモい黒魔術を使ってたような。variantのほうだっけ? [宮崎産を食べよう]
2010-06-03 09:21:47@kikairoya Optional は、例外安全に対しては基本的な保証しかしてないですよ。その分、どんな型でも高速です。
2010-06-03 09:22:41@kikairoya キモいのは Variant ですね。 つ http://www.boost.org/doc/libs/1_43_0/doc/html/variant/design.html#variant.design.never-empty
2010-06-03 09:24:15こっちか。 RT @SubaruG: @kikairoya キモいのは Variant ですね。 つ http://bit.ly/92niFt
2010-06-03 09:24:48Boost.Optional は「メモリの寿命管理とオブジェクトの寿命管理をライブラリレベルで別々に行える」「実際の使用に関してはそんな事は意識しなくていい」というC++「らしさ」が最も端的に現れていて、しかも誰にとっても普通に有用な、名ライブラリ。
2010-06-03 09:32:42ってーか今、 T に対して has_trivial_destructor<T> が true_type なら has_trivial_destructor< my_optional<T> > も true_type になるような俺々 optional を作ってる。
2010-06-03 09:41:44いかん optional<T&> で無駄な領域がある妥当な理由がどう考えても分からない。ので @SubaruG が optional<T&> の特殊化を実装してくれるのを待とう。
2010-06-03 09:49:50