OptionalかわいいよOptional

4
普通のC++使い、銀天すばる @SubaruG

やばい。 one-phase construction はやはり必要だ。

2010-06-03 00:28:09
普通のC++使い、銀天すばる @SubaruG

やはり Boost.Optional は正義なのである。型変換コンストラクタが何故か explicit だったりするけど。

2010-06-03 00:32:46
Egtra (ysk-noh) @egtra

Boost.Optionalと言えば、if (x) f(*x);的なoptional<> xが値を保持しているときだけ関数fを適用するような関数がそろそろBoost.Optional本体に入っていいと思う。

2010-06-03 00:44:39
普通のC++使い、銀天すばる @SubaruG

思う。 RT @egtra: Boost.Optionalと言えば、if (x) f(*x);的なoptional<> xが値を保持しているときだけ関数fを適用するような関数がそろそろBoost.Optional本体に入っていいと思う。

2010-06-03 00:45:20
普通のC++使い、銀天すばる @SubaruG

ただ、戻り値をどうするか問題が…。

2010-06-03 00:45:28
普通のC++使い、銀天すばる @SubaruG

~T() じゃなくて delete だからダメダメだ。

2010-06-03 00:46:33
Egtra (ysk-noh) @egtra

HaskellのMaybeってこういうことできるんだよね?

2010-06-03 00:47:16
Egtra (ysk-noh) @egtra

@SubaruG 戻り値の型はoptional<decltype (f(*x))>でできないでしょうか。

2010-06-03 00:47:42
普通のC++使い、銀天すばる @SubaruG

@egtra 大丈夫ですが、もし戻り値が optional だった場合にどうするかが問題ですねー。

2010-06-03 00:48:56
Egtra (ysk-noh) @egtra

optionalはget_optional_value_orが好きだけど、あまり使う機会がない。あとC#の??は簡潔でいいなあとか。

2010-06-03 00:49:18
普通のC++使い、銀天すばる @SubaruG

optional はむしろ初期化遅延に使う。

2010-06-03 00:50:35
Egtra (ysk-noh) @egtra

@SubaruG なるほど、素直にoptional<optional<T>>となることしか考えていませんでした。

2010-06-03 00:50:44
普通のC++使い、銀天すばる @SubaruG

あらゆるものを、動的メモリ確保なしに default constructible にしてくれる optional は素敵だと思うんだぜ。

2010-06-03 00:51:27
普通のC++使い、銀天すばる @SubaruG

@egtra optional< optional<T> > でもいいですけど、連続して適用する場合に面倒だなぁ、と。

2010-06-03 00:52:39
Egtra (ysk-noh) @egtra

@SubaruG ええたしかに。fが非optionalを返す場合しか考えていませんでした。

2010-06-03 00:54:16
Egtra (ysk-noh) @egtra

@decimalbloat ええ、@SubaruG が言いたいのはそういうことだと思っていました。

2010-06-03 00:57:18
普通のC++使い、銀天すばる @SubaruG

T が非 optional なら optional<T> を、 optional<U> なら optional<U> を返す add_optional メタ関数を作れば問題無し。

2010-06-03 00:57:37
普通のC++使い、銀天すばる @SubaruG

うにーくぽいんたじゃなくて optional 使えばいい局面って多いよね。

2010-06-03 01:00:02
普通のC++使い、銀天すばる @SubaruG

optional<T>& 引数はなにげに便利。ただし const 教的には邪道なので unique_ptr を返した方がいいかも。

2010-06-03 01:01:40
普通のC++使い、銀天すばる @SubaruG

Boost.Optional は placement new 関連を綺麗にラップしてくれるメモリ管理ライブラリとしての側面が大きいので、 Maybe モナドより強力だと思う。なんで標準じゃないの?

2010-06-03 01:06:01
Akira Takahashi @cpp_akira

@SubaruG 標準ライブラリのエラーポリシーに関わるものなので慎重になってる・・・としてもC++0xはどでかいメジャーバージョンアップなので入れてもよかったと思います。TR2にご期待ください。

2010-06-03 01:07:22
鯉江 @koie

引数に使うことは考えたことがなかったが便利そう RT @SubaruG: optional<T>& 引数はなにげに便利。ただし const 教的には邪道なので unique_ptr を返した方がいいかも。

2010-06-03 01:24:28
鯉江 @koie

引数に使うことは考えたことがなかったが便利そう RT @SubaruG: optional<T>& 引数はなにげに便利。ただし const 教的には邪道なので unique_ptr を返した方がいいかも。

2010-06-03 01:24:28
1 ・・ 6 次へ