私的コンセプト
コンセプトのドキュメント(とりあえず版)を追加しました。
今日の成果物
Boost.Iostreamsのコンセプトは、Boostのドキュメントのままだと少し変な感じです。
例えば、コンセプトOptimallyBufferedのドキュメントには、型Oのオブジェクトoに対して、
io::optimal_buffer_size(o)
という式が有効ならOptimallyBufferedだと書いてあるのですが、optimal_buffer_size()のドキュメントを見ると、
category_of<T>::type semantics convertible to optimally_buffered_tag Returns t.optimal_buffer_size(). convertible to filter_tag but not to optimally_buffered_tag Returns default_filter_buffer_size. otherwise Returns default_device_buffer_size.
となっていて、これではあらゆるフィルタとデバイスがOptimallyBufferedになってしまいます。
もちろん、これは id:y-hamigaki:20060616 で紹介したoperations<T>によるカスタマイズも考慮してのことだとは思いますが、自分の用途には合わないのでより狭義の意味に再定義しています。(id:y-hamigaki:20060705 参照)
あと、コンセプトのリファレンスを書いて気が付いたのですが、テンプレートパラメータから同名のコンセプトへ自動でリンクされるようです。
今後はこれを考慮して書いたほうがよいですね。あんまり長い名前は書きたくないですが。