先日、boost::lexical_castの議論がTwitterでありまして その中で「lexical_castは変換失敗時に例外を投げるが、boost::optional版も用意すべき」という意見がありました。 下位互換性を保ったまま、boost::lexical_castにboost::optional版を追加するには lexical_cast_optionalのような別名の関数を用意する、という選択肢がありますが C++0xで導入される関数テンプレートのデフォルトテンプレート引数を使用すれば これをオーバーロードで解決することができます。 以下は、関数テンプレートのデフォルトテンプレート引数に対応しているGCC 4.4を使用しています。 #include <iostream> #include <sstream> #include <string> #include <typein