普通のC++使い、銀天すばる
@SubaruG
無論、普段はメモリ管理とオブジェクト管理は切り離すべきではないのですが。それこそ「それBoost.Optionalで出来るよ!」「それ make_shared で出来るよ!」だし。
2010-06-03 05:22:04
普通のC++使い、銀天すばる
@SubaruG
Boost.Optional の変種で、コンストラクタではオブジェクトを構築しないで、実際に *x とか呼ばれたときにオブジェクトを構築するような何かを作ってみてはどうか。
2010-06-03 06:10:34
Ikegami Daisuke
@ikegami__
コンパイル時では値が同じになるかどうかわからないので、さすがにそれは難しいのではないかと RT @SubaruG 二回目からは計算させたくない
2010-06-03 06:11:39
普通のC++使い、銀天すばる
@SubaruG
引数パックの合計サイズが sizeof(T) を超えない場合は、動的メモリ確保しないでおく、という小技とか使って。
2010-06-03 06:11:46
普通のC++使い、銀天すばる
@SubaruG
@ikegami__ コンパイル時に機械的に決まって欲しいとは思ってなくて、ライブラリとして適切な物が有るかなー、と。
2010-06-03 06:12:55
普通のC++使い、銀天すばる
@SubaruG
オブジェクトが実際に要求される(*で参照外し)されると、その関数が呼ばれて、以降は普通の optional<T> として振舞う。
2010-06-03 06:14:48
普通のC++使い、銀天すばる
@SubaruG
となると、ジェネリックな std::function では役者不足だな。スタック上のサイズをテンプレートパラメータとして指定出来る汎用関数オブジェクトが必要だ。
2010-06-03 06:17:57
鯉江
@koie
m_initializedぽいです RT @SubaruG: うわ。Boost.Optional 終わりすぎ。 optional<T&> って T* と同じもんじゃん。なんでサイズ違うんだ>< http://ideone.com/PIEfo
2010-06-03 08:50:45
鯉江
@koie
m_initializedぽいです RT @SubaruG: うわ。Boost.Optional 終わりすぎ。 optional<T&> って T* と同じもんじゃん。なんでサイズ違うんだ>< http://ideone.com/PIEfo
2010-06-03 08:50:45