You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
動機: boost::optionalだけじゃなくboost::eitherがほしい - Faith and Brave - C++で遊ぼう Boost.Optional は C++ でも屈指の便利ライブラリですが、 「戻り値として使う」場合には、時々「失敗した」という状況の他に、失敗した状況を示すような値が返せると嬉しい場合があります。 つまり、関数本来の戻り値の代わりに、それとは別の型でエラー情報を返すことも出来る、 要するに Haskell で言うところの Either a b があるといい、ということです。 これを C++ で実現するためには、一見して Boost の Variant を使うことで boost::variant<string, double> sqrt_either( double x ) { if( x < 0 ){ return "negative number
boost::optionalは成功か失敗かしかわからないので 失敗した理由付きのoptionalがほしいよね、という話がTwitterでありました。 Maybeモナド(boost::optional)に対するEitherモナドのように boost::eitherという名前だと仮定して、こんな感じで使えるといいんじゃないかな、と。 either<int> foo(int a) { typedef either<int> result_type; return a >= 0 ? a : result_type("invalid argument", result_type::error_tag()); } either<int> x = foo(-1); if (!x) cout << x.what() << endl; cout << x.get() << endl; エラーがネストしてた
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く