constな型のメンバ型

今日もドキュメント書きとバグ修正がメインです。
SourceForge.jp側でドキュメントを生成できるように環境を整備したので、多少楽になりました。
エクスポートして、ドキュメントをビルドして(これが時間がかかる&重い)、tarballを作って、持っていって、展開しての手間が省けています。


ドキュメントを書いていて、first_iteratorのバグ(iterator_traitsを使っていない)に気が付いたので、修正しました。
http://hamigaki.sourceforge.jp/hamigaki/iterator/first_iterator.hpp

ついでにファンクタの戻り値を参照に変えて、RandomAccessIteratorまでサポートできるように修正しています。(ただし、読み出し専用です。)
書き込みも可能にするためには、
typename std::iterator_traits<Iterator>::referenceが指しているオブジェクトがconst
→戻り値をconst typename std::iterator_traits<Iterator>::value_type::first_type&にする
それ以外
→戻り値をtypename std::iterator_traits<Iterator>::value_type::first_type&にする
としなければいけません。
やっぱり、Boost.MPLとBoost.TypeTraitsで地道にやるしかないですかねぇ。
こういうの、どこかにありそうな気もするんですけど。