動機: C++ で Haskell の Either っぽい何かを作ってみた。 - 野良C++erの雑記帳 せっかく Either 作ったんだから Maybe モナドも作ろうぜ、という話。 まず Boost には、既に Maybe に相当する Boost.Optional が存在するので、 そいつをモナドの >>= に対応させてやればよい、 という考え方が最もストレートなものであり、 実際、そういう方針で書かれたコードは既に存在してたりします。 (例: C++でMaybeモナド - Faith and Brave - C++で遊ぼう) そこで、少し発想を変えてみることにしました。 まず、 Haskell のモナドを、そのまま C++ に持ち込むのは、やはりキモいです。 C++ には暗黙の型変換という文化があるので、その恩恵をフルに活用出来ないか。 また、 C++ における Maybe 相当