タグ

ブックマーク / gintenlabo.hatenablog.com (2)

  • C++ で Maybe モナド - 野良C++erの雑記帳

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

    C++ で Maybe モナド - 野良C++erの雑記帳
    iww
    iww 2012/08/04
    Maybe
  • C++0x 標準ライブラリ完全解説 〜 No.01 namespace rel_ops, <utility> - 銀天随筆集

    該当規格: 20.3.1 Operators [operators], N3225 http://sites.google.com/site/cpprefjp/reference/utility/rel_ops さて、それでは早速、具体的なライブラリに移っていこうと思います。 とはいえ、初回から飛ばすのもアレなので、まずは軽いものを、 というわけで、 の rel_ops を紹介したいと思います。 これは比較演算子の多重定義を助けるためのヘルパ関数群で、 で唯一、 C++98/03 から全く変化していないライブラリです。 定義 namespace std { namespace rel_ops { template <class T> bool operator!=( const T& x, const T& y ) { return !( x == y ); } template <cla

    C++0x 標準ライブラリ完全解説 〜 No.01 namespace rel_ops, <utility> - 銀天随筆集
  • 1