3
普通のC++使い、銀天すばる @SubaruG
俺々 Boost.Optional 開発開始。折角なのでC++0xで書く。
普通のC++使い、銀天すばる @SubaruG
無理に既存の Boost.Optional と合わせるようなことはせず、C++0xとして(僕主観で)自然になるように書いてみよう。
普通のC++使い、銀天すばる @SubaruG
つまり in_place factory からの明示的変換/代入ではなく、別の one-phase construction を模索する。
普通のC++使い、銀天すばる @SubaruG
コンパイラの自動生成にはいつもお世話になっております(ただしC++に限る)
普通のC++使い、銀天すばる @SubaruG
んー。 右辺値参照ポインタが欲しくなってしまった。
普通のC++使い、銀天すばる @SubaruG
多分ないよな。ない理由も分かるし。うりゅうりゅ。
普通のC++使い、銀天すばる @SubaruG
ってかふと思ったけど optional<T&&> って必要じゃね?
普通のC++使い、銀天すばる @SubaruG
とりあえず気付かなかった振りをしておこう
普通のC++使い、銀天すばる @SubaruG
optional<T&&> ってどんなオブジェクトなんだろう。正直、あんまりイメージできない/。
普通のC++使い、銀天すばる @SubaruG
とりあえず * を適用すると T&& になるクラス、だから…
対鉱物用武装 @kikairoya
optional<T &&>はすごく扱いづらい気がする [宮崎産を食べよう]
普通のC++使い、銀天すばる @SubaruG
つまり operator*() も operator*() const も operator*() && も T&& になるクラスってことか?
普通のC++使い、銀天すばる @SubaruG
一回参照外したらハイ終了、という
対鉱物用武装 @kikairoya
vector<T &&>って出来ないよな・・・ [宮崎産を食べよう]
対鉱物用武装 @kikairoya
それを考えるとoptional<T &&>は単純に禁止したほうが幸せかも [宮崎産を食べよう]
対鉱物用武装 @kikairoya
ああoptionalがこんな実装になってるのはpartial specializationがないコンパイラのためか [宮崎産を食べよう]
普通のC++使い、銀天すばる @SubaruG
std::is_convertible と std::is_explicitly_convertible って同じものっぽい?
普通のC++使い、銀天すばる @SubaruG
うわ、 std::enable_if って integral_constant じゃなくて bool をとるのかよ。
普通のC++使い、銀天すばる @SubaruG
つまりいちいち std::enable_if< is_xxx<T>::value > って書かなければいけない、とか…面倒。
Akira Takahashi @cpp_akira
boost::enable_if_cです。 RT @SubaruG: うわ、 std::enable_if って integral_constant じゃなくて bool をとるのかよ。
普通のC++使い、銀天すばる @SubaruG
boost::enable_if は依然として必要ということが理解出来た。
普通のC++使い、銀天すばる @SubaruG
is_convertible<From&, To> って表現はだいじょうぶだよな。ちょっと闇の書を見てくるか。
普通のC++使い、銀天すばる @SubaruG
is_convertible<From, To> は、 From&& から To への暗黙変換が可能なときに true_type になる、と。
普通のC++使い、銀天すばる @SubaruG
From が T& の場合は、 T& && -> T& となるから…うむ、問題ない。
普通のC++使い、銀天すばる @SubaruG
ぐぬぬ。 tuple を unpack したい…(半ば定期post)
残りを読む(65)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?

ログインして広告を非表示にする
ログインして広告を非表示にする