合成データにイテレータをboost::iterator_facade<>
で作成しています。データは、ハンドル上の関数を呼び出すことによってのみアクセスできます。ハンドルはMyHandle
にラップされています。私はValue
とReference
テンプレートパラメータの両方にMyHandle
を使用する必要があることを認識しました。だから、イテレータ宣言は次のようになります。合成データのイテレータを作成する方法は?
class MyIterator
: public boost::iterator_facade<
MyIterator
, MyHandle
, boost::forward_traversal_tag
, MyHandle
>
これはこの種のものを行うにはどのように唯一の方法ですか?あるいは、合成データ用のイテレータを作成する方法があるのでしょうか?また、boost::forward_traversal_tag
は、コードで別のイテレータタグを使用すると、データの人為性がうまく伝わらないようです。
、そう簡単な関数はしないだろう。 – wilx
「シンプルファンクション」と言うと、「コール間に状態が続くファンクション」を意味しますか?これはバリアではありません。なぜなら、関数呼び出し演算子を定義するステートフルな構造体を含む、呼び出し可能なオブジェクトでfunction_input_iteratorを構築できるからです。 – gred