これは C++ Advent Calendar 2014 9日目の記事である。 初めに 「C++03でoptionalを作れるか?」Boost.Spiritを読みながら構文解析ライブラリを自作しようとしてこの問にぶち当たった。できるはずである。なぜならBoost.SpiritはBoost.Optionalを利用しているからだ。Boost.Optionalは他の多くのBoostライブラリと同じくC++03に対応したほとんどの主要なコンパイラで利用することができる。しかし話はそう簡単ではなかった。 変なところや分かりにくいところがあったら指摘をお願いします。 optionalについて optionalについて知らない人のために簡単に紹介する。 optionalは簡潔に言うと「オブジェクトが有効か無効かのフラグを付加するオブジェクトのラッパー」である。Haskellを触ったことのある人ならば、C
